Docker Mods Not Working with LSIO images

Describe the bug
Using the lsio sonarr image, I get the following message when starting the container:
[cont-init.d] 98-themepark: executing...
foreground: warning: unable to spawn /var/run/s6/etc/cont-init.d/98-themepark: No such file or directory

Theme Install Method (Don't skip)
Docker Compose:
 sonarr:
    image: linuxserver/sonarr:version-<IP_ADDRESS>5
    container_name: sonarr
    restart: 'no'
    ports:
      - '8989:8989'
    volumes:
      - ./sonarr:/config:Z
      - ../downloads:/downloads:z
      - ../shows:/tv:z
      - ../recycle_bin/shows:/recycle_bin:z
    environment:
      PUID: 986
      PGID: 1001
      TZ: America/New_York
      DOCKER_MODS: ghcr.io/gilbn/theme.park:sonarr
      TP_THEME: aquamarine

full logs:
[mod-init] Attempting to run Docker Modification Logic
[mod-init] Applying gilbn/theme.park:sonarr files to container
[s6-init] making user provided files available at /var/run/s6/etc...exited 0.
[s6-init] ensuring user provided files have correct perms...exited 0.
[fix-attrs.d] applying ownership & permissions fixes...
[fix-attrs.d] done.
[cont-init.d] executing container initialization scripts...
[cont-init.d] 01-envfile: executing...
[cont-init.d] 01-envfile: exited 0.
[cont-init.d] 10-adduser: executing...

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/

Brought to you by linuxserver.io
-------------------------------------

To support the app dev(s) visit:
Sonarr: https://sonarr.tv/donate

To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    986
User gid:    1001
-------------------------------------

[cont-init.d] 10-adduser: exited 0.
[cont-init.d] 30-config: executing...
[cont-init.d] 30-config: exited 0.
[cont-init.d] 90-custom-folders: executing...
[cont-init.d] 90-custom-folders: exited 0.
[cont-init.d] 98-themepark: executing...
foreground: warning: unable to spawn /var/run/s6/etc/cont-init.d/98-themepark: No such file or directory
[cont-init.d] 98-themepark: exited 127.
[cont-init.d] 99-custom-scripts: executing...
[custom-init] no custom files found exiting...
[cont-init.d] 99-custom-scripts: exited 0.
[cont-init.d] done.
[services.d] starting services
[services.d] done.
[Info] Bootstrap: Starting Sonarr - /app/sonarr/bin/Sonarr.exe - Version <IP_ADDRESS>5
[Info] AppFolderInfo: Data directory is being overridden to [/config]
[Info] Router: Application mode: Interactive
[Info] MigrationLogger: *** Checking database for required migrations data source=/config/sonarr.db;cache size=-10000;datetimekind=Utc;journal mode=Wal;pooling=True;version=3 ***
[Info] MigrationLogger: *** Checking database for required migrations data source=/config/logs.db;cache size=-10000;datetimekind=Utc;journal mode=Wal;pooling=True;version=3 ***
[Info] OwinHostController: Listening on the following URLs:
[Info] OwinHostController:   http://*:8989/sonarr/
[Info] OwinHostController:   http://*:8989/
[Info] SonarrBootstrapper: Starting Web Server
[Info] RssSyncService: Starting RSS Sync
[Info] DownloadDecisionMaker: Processing 201 releases
[Info] RssSyncService: RSS Sync Completed. Reports found: 201, Reports grabbed: 0, Reports pending: 1

Your sonarr container is from 2021. Update it.

Welp... I should have known better... Thanks.


mapnik: init at 3.0.9

This adds mapnik version 3.0.9 as well as its most recent python bindings. There hasn't been a stable release of the bindings since they have seperated them from the main repo in 3.*. That is why it downloads the latest git rev. Tested and working.

@lethalman done

Built locally thanks.


QR code is still too small in some cases

This is essentially the same bug as #606, which was closed.
Our default AllowedIPs setting is 797 characters long, containing 45 prefixes. When I try to scan this code from the Android WireGuard app, it fails with the error message «Unable to import tunnel: Unknown section in Config», if it manages to scan anything at all (sometimes it doesn't).
Other QR/barcode scanners generally fail to scan anything.
If I shorten AlllowedIPs, it works. It also works if I download the generated config file and run qrencode -t ansiutf8 on it.
So I believe the 300x300 px resolution used by Firezone is still too small. I would suggest making the resolution considerably bigger (4K UHD maybe?), admin-configurable, or dynamically determined based on the size of the encoded configuration file.
To prevent it from being too massive in the default key view pop-up, maybe some "click to maximise" function would be appropriate.
Edit: I tried to download the .conf file and pipe it to qrencode -t PNG.  The resulting PNG was 351x351 px (it would appear that qrencode dynamically determines the necessary resolution by default), and the WireGuard app was able to import it without any issues.

Thanks for the detailed report! Gosh darnit, those pesky QR codes!
There are some inherent limits to the size of QR codes. The maximum seems to be 23,648 bits, or about 2.9 KB.

Assuming one per character, configs could theoretically easily surpass that limit with a long AllowedIPs list or many Peers entries.
We are working on our own custom clients to make this a non-issue, but perhaps for the time being the solution is detect when the WG config is too large to be shown in a QR code, and simply state as such.

perhaps for the time being the solution is detect when the WG config is too large to be shown in a QR code, and simply state as such.

Agreed, but that is somewhat orthogonal to the issue I'm reporting because my WG configs are not too large to be represented as QR codes, it's just that Firezone squeezes them into a too small PNG so they become unintelligible to the WireGuard app (and other code reader apps).

#1222 Should fix this.


Max and avg on the same null value should return the same answer

We are showing IoT results in a time series graph over x amount of time. We need to show max and average results but are getting zeros back for max when we would expect nulls in the following case:
avg(null, null, null) = null
max(null,null,null) = 0 (expect null here)
Once we have those results, we need to average but since max returns zero instead of null, we have more results to average, giving a false answer.
This also causes issues when we have states (0 and 1) on devices that only report changes. So if we max 3 nulls because a device has simply not had a change from 1 to 0, then the max still comes back as 0 which is not correct.
Expect to see:
avg(null, null, null) = null
max(null,null,null) = null
Any way of forcing this behaviour? It is vital so that we can display our 1000s of graph points correctly.

What CH version do you use? I don't observe the described behavior.

SELECT CAST(NULL, 'Nullable(Float64)') AS a
FROM numbers(3)

┌────a─┐
│ ᴺᵁᴸᴸ │
│ ᴺᵁᴸᴸ │
│ ᴺᵁᴸᴸ │
└──────┘

SELECT max(a)
FROM
(
    SELECT CAST(NULL, 'Nullable(Float64)') AS a
    FROM numbers(3)
)

┌─max(a)─┐
│   ᴺᵁᴸᴸ │
└────────┘

SELECT avg(a)
FROM
(
    SELECT CAST(NULL, 'Nullable(Float64)') AS a
    FROM numbers(3)
)

┌─avg(a)─┐
│   ᴺᵁᴸᴸ │
└────────┘

ClickHouse <IP_ADDRESS>
select
id, maxIf(value, id == 1) as max
from (
select
number as id,
number * 2 as value
from
numbers(5)
) group by id
versus
select
id, avgIf(value, id == 1) as max
from (
select
number as id,
number * 2 as value
from
numbers(5)
) group by id

    id, avgIf(value, id == 1) as max
from (
select
  number as id,
  CAST(NULL, 'Nullable(Float64)') as value
from
  numbers(5)
) group by id

versus
    id,maxIf(value, id == 1) as max
from (
select
  number as id,
  CAST(NULL, 'Nullable(Float64)') as value
from
  numbers(5)
) group by id

| id | max
| 0 |
| 4 |
| 3 |
| 2 |
| 1 |

select id, avgIf(value, id == 1) as avg, maxIf(value, id == 1) as max
from (
select
  number as id,
  CAST(null, 'Nullable(Float64)') as value
from
  numbers(5)
) group by id

| id | avg | max |
| 0 |  |  |
| 4 |  |  |
| 3 |  |  |
| 2 |  |  |
| 1 |  |  |
and
select id, avgIf(value, id == 1) as avg, maxIf(value, id == 1) as max
from (
select
  number as id,
  CAST(number*2, 'Nullable(Float64)') as value
from
  numbers(5)
) group by id

| id | avg | max |
| 0 |  | 0 |
| 4 |  | 0 |
| 3 |  | 0 |
| 2 |  | 0 |
| 1 | 2 | 2 |

In fact, ifnull doesn't want to output the expected "1" either but the following at least gives the last column for max to be nulls
select
  id,
  avgIf(value, id == 3) as average,
  maxIf(value, id == 3) as maximum,
  ifNull(average,1) as thing,
  maximum*thing/thing as realmax
from (
select
  number as id,
  number*2 as value
from
  numbers(5)
) group by id

| id | average | maximum | thing | realmax |
| 0 | null | 0 | null | null |
| 4 | null | 0 | null | null |
| 3 | 6 | 6 | 6 | 6 |
| 2 | null | 0 | null | null |
| 1 | null | 0 | null | null |

The following maths work because it uses a number so small that the db can't actually ever store or use it so we never run into the problem of /0
select
  id,
  value,
  avgIf(value, id == 0) as average,
  maxIf(value, id == 0) as maximum,
  ( ( (average-0.00000000000001) / (average+0.00000000000001) ) / ( (average-0.00000000000001) / (average+0.00000000000001) ) ) as seo,
  maximum* ( ( (average-0.00000000000001) / (average+0.00000000000001) ) / ( (average-0.00000000000001) / (average+0.00000000000001) ) ) as realmax3
from (
select
  number as id,
  number-0.00000000000001 as value
from
  numbers(10)
) group by id, value

So the difference is that avg(0/0) == null ? It seems already fixed.
Current behavior is nan for avg in case of 0 count.
<IP_ADDRESS>9
SELECT
    id,
    avgIf(value, id = 1) AS max,
    sumIf(value, id = 1) AS sum,
    countIf(value, id = 1) AS cnt
FROM
(
    SELECT
        number AS id,
        number * 2 AS value
    FROM numbers(5)
)
GROUP BY id

┌─id─┬─max─┬─sum─┬─cnt─┐
│  0 │ nan │   0 │   0 │
│  4 │ nan │   0 │   0 │
│  3 │ nan │   0 │   0 │
│  2 │ nan │   0 │   0 │
│  1 │   2 │   2 │   1 │
└────┴─────┴─────┴─────┘

SELECT
    id,
    value,
    avgIf(value, id = 0) AS average,
    maxIf(value, id = 0) AS maximum,
    ((average - 1e-14) / (average + 1e-14)) / ((average - 1e-14) / (average + 1e-14)) AS seo,
    maximum * (((average - 1e-14) / (average + 1e-14)) / ((average - 1e-14) / (average + 1e-14))) AS realmax3
FROM
(
    SELECT
        number AS id,
        number - 1e-14 AS value
    FROM numbers(10)
)
GROUP BY
    id,
    value

┌─id─┬────────────value─┬─average─┬─maximum─┬─seo─┬─realmax3─┐
│  3 │ 2.99999999999999 │     nan │       0 │ nan │      nan │
│  7 │ 6.99999999999999 │     nan │       0 │ nan │      nan │
│  6 │ 5.99999999999999 │     nan │       0 │ nan │      nan │
│  1 │ 0.99999999999999 │     nan │       0 │ nan │      nan │
│  0 │           -1e-14 │  -1e-14 │  -1e-14 │ nan │      nan │
│  5 │ 4.99999999999999 │     nan │       0 │ nan │      nan │
│  4 │ 3.99999999999999 │     nan │       0 │ nan │      nan │
│  2 │ 1.99999999999999 │     nan │       0 │ nan │      nan │
│  9 │ 8.99999999999999 │     nan │       0 │ nan │      nan │
│  8 │ 7.99999999999999 │     nan │       0 │ nan │      nan │
└────┴──────────────────┴─────────┴─────────┴─────┴──────────┘

That second query, the seo column should have the value 1 on ID 0. This is what we'd expect. That is what I get when I run that query in tabix. We would expect maximum to give nan instead of 0 for all the other IDs but instead it appears that extra maths is necessary as shown in column realmax3 to make this happen which does not seem correct. maxIf should return null , the same as avgIf, right?

What I had hoped was that such a small number such as -1e-14 would never be possible to store in the db but it seems I'm mistaken on that. This would have been a possible work-around for us as realmax3 is the expected output for us but at the same time we need to be careful to use a number small enough so that it never occurs in the results.

So the difference is that avg(0/0) == null ? It seems already fixed.

Can't divide by 0, hence the maths to prevent that.

That second query, the seo column should have the value 1 on ID 0.

No  [ / (average + 1e-14)) AS seo ] === / ( -1e-14 +  1e-14 ) ~ nan of inf
because of math
SELECT 1 / 0

┌─divide(1, 0)─┐
│          inf │
└──────────────┘

SELECT 0 / 0

┌─divide(0, 0)─┐
│          nan │
└──────────────┘

@den-crane exactly. We cannot be dividing by 0. Check my query again. What you have is not what I have.
Something other than 0 divided by something other than 0 will always be 1.

The seo column is just something we came up with to show what we expect maxIf to return. There is still the problem of avgIf and maxIf behaving differently according to input. It would solve so many of our problems if this was resolved. We wouldn't need to implement a hack like that realmax3 and seo columns just to get around the problem.

seems you are looking for -- iF(isNaN(x) or abs(x) == inf, Null, x)
select iF(isNaN(x) or abs(x) == inf, Null, x) from (select 1/0 x union all select 0/0 union all select 1/1)

select
  id,
  iF(isNaN(avgIf(value, id == 3) as average) or abs(average) == inf, 0, average) avg_fix,
  maxIf(value, id == 3) as maximum
from (
select
  number as id,
  number*2 as value
from
  numbers(5)
) group by id

┌─id─┬─avg_fix─┬─maximum─┐
│  0 │       0 │       0 │
│  4 │       0 │       0 │
│  3 │       6 │       6 │
│  2 │       0 │       0 │
│  1 │       0 │       0 │
└────┴─────────┴─────────┘

How will we know what is a real max of 0 and what isn't?
We are drawing graphs of incoming data for IoT devices that report states.
Sometimes that state is 0 and sometimes it is a value higher or lower than
0.
We ask the database for all values according to an aggregation selection eg
max or avg etc for specific time periods eg last 5 seconds. If a device has
not reported any state in that time, it should not show 0 instead of null
or nan.
When we query using avgIf, we get nulls where no data exists but if we use
maxIf, we get false zeros and we cannot tell which ones are true zero
states reported and which ones are just the maxIf function false zeros.
This is why the example we have used has a zero result as one of the rows,
so we can show you that there is no distinction between the ID 0 result for
maxIf and all the other rows that also show 0 as a false result for maxIf,
while in avgIf, there is a clear distinction between a true 0 result and
all the other Nan results.
On Wed, 19 Jun 2019, 11:10 AM Denis Zhuravlev<EMAIL_ADDRESS>wrote:

seems you are looking for -- iF(isNaN(x) or abs(x) == inf, Null, x)
select iF(isNaN(x) or abs(x) == inf, Null, x) from (select 1/0 x union all
select 0/0 union all select 1/1)
select
id,
iF(isNaN(avgIf(value, id == 3) as average) or abs(average) == inf, 0, average) avg_fix,
maxIf(value, id == 3) as maximum
from (
select
number as id,
number*2 as value
from
numbers(5)
) group by id
┌─id─┬─avg_fix─┬─maximum─┐
│  0 │       0 │       0 │
│  4 │       0 │       0 │
│  3 │       6 │       6 │
│  2 │       0 │       0 │
│  1 │       0 │       0 │
└────┴─────────┴─────────┘
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/yandex/ClickHouse/issues/5612?email_source=notifications&email_token=AKRLPG7JTAV54ZEPWLBVMNTP3FTNXA5CNFSM4HYBUYS2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYAG5SI#issuecomment-503344841,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AKRLPG3Q43U4GVFHLEN6KZDP3FTNXANCNFSM4HYBUYSQ
.

OK. Understood now. But why you cannot add group by device ?
it's really wrong behavior in case of max()/avg group by 1 on zero rows.
select max(a),avg(a) from (select 5 a) where 1=0 settings empty_result_for_aggregation_by_empty_set=0;
┌─max(a)─┬─avg(a)─┐
│      0 │    nan │
└────────┴────────┘

psql > select max(a), avg(a) from (select 5 a) as t where 1=0;
 max | avg
-----+-----
     |
(1 row)

mysql> select max(a), avg(a) from (select 5 a) as t where 1=0;
+--------+--------+
| max(a) | avg(a) |
+--------+--------+
|   NULL |   NULL |
+--------+--------+

I don't understand what the last examples meant. We expect maxIf to give back nan instead of zero when avg would give back nan. This allows us to handle those nan's in different ways depending on what graph type we render.

Here is an example straight from our database for your perusal. At any point in time, we will query on a time frame, where a result for a specific ID may or may not occur. maxIf() is not behaving correctly when no result comes back, while avgIf() returns null/ nothing, not even NAN.
I have tried copying the empty value out to see what it contains, whether it is infact a nan or null or something, but it's just empty, which on our end comes through as a null. This is perfect for avg because we can carry previous values forward if they did not report a state/value change in the db. Max however, is broken because it does not.
select
  SiteId,Value,Time,
  avgIf(Value, SiteId == 562) as average,
  maxIf(Value, SiteId == 562) as maxc
from
  temp.temptable
where
  Time > '2019-05-25 16:00:00' and Time < '2019-05-31 20:11:46'
group by
  SiteId, Value, Time
limit 10

Results:
┌─SiteId─┬─Value─┬─Time────────────────┬─average─┬─maximum─┐
|    618 |  1000 | 2019-05-26 18:32:42 |         |       0 |
|    620 |     1 | 2019-05-29 15:09:56 |         |       0 |
|    562 |     9 | 2019-05-26 08:53:24 |       9 |       9 |
|    566 |     4 | 2019-05-30 19:27:59 |         |       0 |
|    585 |   8.2 | 2019-05-29 07:40:48 |         |       0 |
|    598 |    52 | 2019-05-28 11:01:25 |         |       0 |
|   1410 |  12.4 | 2019-05-26 16:03:09 |         |       0 |
|   1507 |     2 | 2019-05-26 10:29:08 |         |       0 |
|    619 |  1000 | 2019-05-29 09:58:02 |         |       0 |
|    617 |   111 | 2019-05-27 16:33:52 |         |       0 |
└────────┴───────┴─────────────────────┴─────────┴─────────┘

Here is a comparison:
avg(null) = null or "empty string" as it is called in the documentation
avgIf(null, id == 1) = null or "empty string"
max(null) = null or "empty string"
maxIf(null, id == 1) = 0
Expected:
maxIf(null, id == 1) = null or "empty string"

We believe the bug lies with maxIf(), it should not return default 0, it should return default "empty string" so that it works consistently like avg(), avgIf(), and max().
This problem is very urgent for us.

Would anyone please be able to look into this this week?

Any help asap would be greatly appreciated.


Tomcat analysis errors with image_export.py

I'm seeing some errors when running the FileArtifactExtractionTask with the TomcatFiles artifact (as part of the TomcatExtractionJob).  I'm not sure what's different between this and the other FileArtifactExtractionTasks that seem to be working.  The version of ForensicsArtifacts that is installed does have the TomcatFiles artifact listed in it.
Here are the Turbinia Worker logs when trying to run the FileArtifactExtractionTask with TomcatFiles:
[INFO] Starting Task FileArtifactExtractionTask ac424b8034a743c1bab6b1e5eeacbeb2
[INFO] Creating new directory /var/tmp/1538083156-ac424b8034a743c1bab6b1e5eeacbeb2-FileArtifactExtractionTask
[INFO] Attaching disk greendale-host1-disk to instance turbinia-server
[INFO] Attaching greendale-host1-disk to VM turbinia-server in READ_ONLY mode
[INFO] Block device /dev/disk/by-id/google-greendale-host1-disk successfully attached
[INFO] Running image_export as [image_export.py --logfile /var/tmp/1538083156-ac424b8034a743c1bab6b1e5eeacbeb2-FileArtifactExtractionTask/ac424b8034a743c1bab6b1e5eeacbeb2.log -w /var/tmp/1538083156-ac424b8034a743c1bab6b1e5eeacbeb2-FileArtifactExtractionTask/export --artifact_filters TomcatFiles /dev/disk/by-id/google-greendale-host1-disk]
Export started.
Extracting file entries from: TSK:/
Traceback (most recent call last):
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/bin/image_export.py", line 4, in <module>
    __import__('pkg_resources').run_script('plaso==20180818', 'image_export.py')
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 661, in run_script
    self.require(requires)[0].run_script(script_name, ns)
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1441, in run_script
    exec(code, namespace, namespace)
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/lib/python2.7/site-packages/plaso-20180818-py2.7.egg/EGG-INFO/scripts/image_export.py", line 57, in <module>
    if not Main():
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/lib/python2.7/site-packages/plaso-20180818-py2.7.egg/EGG-INFO/scripts/image_export.py", line 36, in Main
    tool.ProcessSources()
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/local/lib/python2.7/site-packages/plaso-20180818-py2.7.egg/plaso/cli/image_export_tool.py", line 768, in ProcessSources
    skip_duplicates=self._skip_duplicates)
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/local/lib/python2.7/site-packages/plaso-20180818-py2.7.egg/plaso/cli/image_export_tool.py", line 331, in _ExtractWithFilter
    self._knowledge_base, artifact_filters, filter_file)
  File "/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj/local/lib/python2.7/site-packages/plaso-20180818-py2.7.egg/plaso/engine/engine.py", line 331, in BuildFilterFindSpecs
    'Error processing filters, no valid specifications built.')
RuntimeError: Error processing filters, no valid specifications built.
[INFO] Execution failed with status 1
[INFO] image_export.py failed.
[INFO] Detaching disk greendale-host1-disk from instance turbinia-server
[INFO] Detaching greendale-host1-disk from VM turbinia-server
[INFO] Block device /dev/disk/by-id/google-greendale-host1-disk is no longer attached

And here is a successful run with the SshdConfigFile artifact:
[INFO] Starting Task FileArtifactExtractionTask 5f459dc9279647d5a67d4ca9ea8c7d65
[INFO] Creating new directory /var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask
[INFO] Attaching disk greendale-host1-disk to instance turbinia-server
[INFO] Attaching greendale-host1-disk to VM turbinia-server in READ_ONLY mode
[INFO] Block device /dev/disk/by-id/google-greendale-host1-disk successfully attached
[INFO] Running image_export as [image_export.py --logfile /var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/5f459dc9279647d5a67d4ca9ea8c7d65.log -w /var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/export --artifact_filters SshdConfigFile /dev/disk/by-id/google-greendale-host1-disk]
Export started.
Extracting file entries from: TSK:/
Export completed.

[INFO] Output file at /var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/5f459dc9279647d5a67d4ca9ea8c7d65.log
[WARNING] New file path [/var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/5f459dc9279647d5a67d4ca9ea8c7d65.log] already exists.
[INFO] Writing /var/tmp/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/5f459dc9279647d5a67d4ca9ea8c7d65.log to GCS path output/1538083139-5f459dc9279647d5a67d4ca9ea8c7d65-FileArtifactExtractionTask/5f459dc9279647d5a67d4ca9ea8c7d65.log
[INFO] Extracted 0 new SshdConfigFile artifacts
[INFO] Detaching disk greendale-host1-disk from instance turbinia-server

Versions:
$ pip list | grep -i artifacts
artifacts                          20180827

$ log2timeline.py -V
plaso - log2timeline version 20180818

$ image_export.py -V
plaso - image_export version 20180818

@rbdebeer or @Onager (Also @berggren as FYI):  Any thoughts on what might be causing this?

I meant to include this:
$ pipenv --venv
/home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj

$ cd /home/aaronpeterson/.local/share/virtualenvs/turbinia-docs-oOHvuNoj

$ find . | grep -i tomcat
./share/artifacts/tomcat.yaml

$ grep -A10 TomcatFiles ./share/artifacts/tomcat.yaml
name: TomcatFiles
doc: Tomcat files.
sources:
- type: ARTIFACT_GROUP
  attributes:
    names:
      - 'TomcatLogFiles'
      - 'TomcatPasswordFile'
labels: [Software]
supported_os: [Darwin,Linux,Windows]
---

I'll have a look this weekend but the difference I see is that TomcatFiles is an artifact group and the SshdConfigFile is not. I don't know if the exporter supports groups.

It does not support groups.
On Fri, 28 Sep 2018 at 12:17 Ramses de Beer<EMAIL_ADDRESS>wrote:

I'll have a look this weekend but the difference I see is that TomcatFiles
is an artifact group and the SshdConfigFile is not. I don't know if the
exporter supports groups.
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/google/turbinia/issues/264#issuecomment-425391292,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABPP5MuPr9ZUcd6b2Ck9A8yln5HnSLAaks5uffdMgaJpZM4W9gFb
.

Another option would be to add support for artifact groups to image_export.py.
@rbdebeer I'll assign this to you for now then.  I may get a chance to look at this later, but I have a few other things I need to take care of first.  Thanks!

Hrm, I can't actually assign @rbdebeer, I'm guessing we need to change some project ACLs.

PR to implement artifact group support in export_image.py is currently under review.
https://github.com/log2timeline/plaso/pull/2166

This is fixed in log2timeline/plaso#2166, and is in plaso release 20181127.


[SPARK-22744][CORE] Add a configuration to show the application submi…

…t hostname
What changes were proposed in this pull request?
In MapReduce, we can get the submit hostname via checking the value of configuration mapreduce.job.submithostname. It can help infra team or other people to do support work and debug. Bu in Spark, the information is not included.
Then, I suggest to introduce a new configuration parameter, spark.submit.hostname, which will be set automatically by default, but it also allows to set this to an user defined hostname if needed (e.g, using an user node instead of Livy server node).
How was this patch tested?
unit tests

Can one of the admins verify this patch?

Your app can already log what it likes. This isn't a config, just an attempt to pass a piece of info. I think this should be closed.

How about change it to system property and it can show in Spark UI. It really can help user (platform team) to trace, control and support application.

You're just using this as a write-only config to pass info, and it's for your own app-specific purposes. It's easier to just pass this info or log it in your app.

I think you miss my point. Please image that I am an infra team member in a company, and spark users are almost using spark sql or just offering an application jar. What I want is get the submit host to help them to debug environment issue or to control the spark version or to limit the submitting hosts. And I cannot finger out where the bad apps submitted from if the user didn’t log it. Yes, I just need a read only info at beginning. So I ask if it can be changed to a system property instread of spark conf. And why I finally choose using a configuration is there is one situation that the submitting host is not the original submitting host from user, it could be a platform server.

No, I understand it. Good news is you can already do this, and the driver host is actually probably already in the logs. This is definitely not a config property, no matter what. Whatever your logic it can and should be in code.

Can one of the admins verify this patch?

driver host is actually probably already in the logs.
What I were care about is submit host not driver host and I have built the spark under trunk and tested in yarn-cluster mode, there is no submit host in am log (even enable debug). So current platform team still difficult to know where an application submitted. They even have to check the YARN audit log to find out where an create operation upon some .sparkStage/files to know the submit host.

And spark.driver.host can be set to sparkConf, why spark.submit.host can not be.
def makeDriverRef(name: String, conf: SparkConf, rpcEnv: RpcEnv): RpcEndpointRef = {
  val driverHost: String = conf.get("spark.driver.host", "localhost")
  val driverPort: Int = conf.getInt("spark.driver.port", 7077)

You can actually set whatever config property you want . There is no need to tell Spark about it because it has no effect. This should be closed.

Thanks your time to discuss so much with me @srowen. Like MapReduce does, the submit host should be set automatically in submitting logical rather than expecting Spark application owner to set. Almost application owners don't care about it so they won't set it in configuration. But if it can be found in WebUI, it would be very helpful to platform/infra team. So the code I contributed
sparkConf.set("spark.submit.hostname", Utils.localHostName) in SparkSubmit.scala has no side effect to application onwers.

What's reason of close? Compare to the configuration "spark.app.id", it's also a write only configuration which set in SparkContext. "spark.submit.hostname" is similar with the "spark.app.id", it shouldn't set by user. It just can be set in spark internal.

The discussion above from several months ago pretty much captures this.


Lack of WebAssembly interpreter utils

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Provide a description that is worded well enough to be understood
I am writing an extractor for rplay.live site (#9240), which use a JS+WASM script to generate signature for request.
The optional dependecy of PhantomJS provided a JS runtime. However, PhantomJS is no longer maintained, and it is outdated has no WebAssembly support. Unless willing to reverse engineering the WASM algorithm, It seems that there is no feasible way to support a site that use WASM with current yt-dlp utils.
Is there any plan to add a WASM-supporting interpreter in the future? I tried playwright and it is easy to work with, although not good as dependency. Deno looks more promising, since its standone binaries can be downloaded separately, and has a mode where permissions are disabled by default.
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
jsi = PhantomJSwrapper(self)
print(jsi.execute('try {console.log(window.WebAssembly.instantiate)} catch (e) {console.log(e.message, e.stack)}'))

------
undefined is not an object (evaluating 'window.WebAssembly.instantiate') global code@phantomjs://code/tmpehxyidc4:14:40

Related discussion: #1354
A while back, pukkandan tried to implement a JS Interpreter API for yt-dlp:
https://github.com/yt-dlp/yt-dlp/compare/master...pukkandan:yt-dlp-dev:features/jsi
It added support for Deno w/ puppeteer, but it had problems achieving parity with PhantomJS (IIRC we couldn't get it to work at all with iq.com).
An approach to adding Deno/puppeteer/etc support that is similar to the above would be acceptable.

If licensing were compatible, https://pythonmonkey.io/ could be interesting.
But as WASM bypasses the hard parts of JavaScript, why not just run it? Maybe look at
https://richardanaya.medium.com/lets-write-a-web-assembly-interpreter-part-1-287298201d75

Related discussion: #1354
A while back, pukkandan tried to implement a JS Interpreter API for yt-dlp: master...pukkandan:yt-dlp-dev:features/jsi
It added support for Deno w/ puppeteer, but it had problems achieving parity with PhantomJS (IIRC we couldn't get it to work at all with iq.com).
An approach to adding Deno/puppeteer/etc support that is similar to the above would be acceptable.

Thanks for bringing up those threads.
Adding support for Deno alone should be straightforward, hopefully this is on the correct track: https://github.com/c-basalt/yt-dlp/blob/e13c4573d95f6a86df8704a0b676cb0df84d527c/yt_dlp/extractor/openload.py#L50-L116. I also made a small change to DouyuBaseIE in this branch, since it needs only a JS interpreter, and PhantomJS and Deno are interchangeable here.
Full browser engine with puppeteer is attractive but it requires a lot more time (including going over iq.com to understand what it take to build the support), so if possible I wish to first start a PR that includes only the basic Deno support (ie. without support for DOM).

The problem is that I don't think we want to add anything more to yt_dlp.extractor.openload, since the plan is to deprecate and remove that module that ASAP.

since it needs only a JS interpreter, and PhantomJS and Deno are interchangeable here.

This was the motivation behind the JSI API; we would use whatever suitable tool the user had installed instead of hardcoding PhantomJS in the extractors, etc. And to move the PhantomJS/etc code into its own module/API instead of openload.py

Then I guess moving things to jsinterp like pukkandan 's work above?
Is there any plan about things like a interface that every class inside jsinterp should implement?

By the way I still think extractor should be responsible to choose the right interpreter. The underlying JS code may try to access JS interfaces that varies like window.location window.navigator. It would be easier if extractor can specify which interpreter to use and patch js accordingly IMO.

By the way I still think extractor should be responsible to choose the right interpreter.

Maybe an API similar to the yt_dlp.networking request handlers would be appropriate for this, with each JS interpreter defining its _SUPPORTED_FEATURES?
e.g.

jsinterp.Native would support partial_syntax
jsinterp.Deno would support all_syntax, wasm
jsinterp.PhantomJS would support all_syntax, dom, headless_browser

etc

My utils.DispatchedFunction is unnecassarily complex and can be get rid of by using a framework like RequestDirector instead of my JSDispatcher. Other than this, the code is still a good starting point.
Resolving the issue we had with iq.com is not a priority. We can force it to use PhantomJS for the time-being.

mark

https://github.com/yt-dlp/yt-dlp/commit/02001159b8515a303134b9fd3ba5ec00fa494f9a
It looks Deno + jsdom can work for iq (with patches on document.domain, document.body and window.screen over jsdom's mocks), which successfully extracted https://www.iq.com/play/sangmin-dinneaw-episode-1-xmk7546rfw.
Headless browser like puppeteer would still be helpful for cases where patching all interfaces is difficult, but hopefully what I got here is something good to start with.


Mailbox marks are disturbing in integrated view

Checklist

[X] I have used the search function to see if someone else has already submitted the same feature request.
[X] I will describe the problem with as much detail as possible.
[X] This issue only contains a request for one single feature, not multiple (related) features.

App version
6.310
Problem you are trying to solve
Those small mailbox marks on the left side from the Subject are quite disturbing in integrated mode.
Please move them to the left or right side and make them longer.
Before

Suggested solution
After (1)

After (2)

Screenshots / Drawings / Technical details
No response

second that - full height,  to the left and a bit thicker

Could make It conditional ; If integrated mode Is enable, or available In options list.


Add a deploy code to Container Apps command (with Dockerfile)

Same as deploy image, but allow selection of a dockerfile. Then use the ACR build command to build the image remotely in the registry.
Requires:

Docker extension
User is signed into Azure

Inputs:

Location of a dockerfile
Optionally, the docker build context (default to the folder of the dockerfile)
Select or create container registry
The image name and tag (the Docker extension defaults one based on the ACR build ID)
Select or create container app (if the Dockerfile has an EXPOSE command, assume app needs an ingress and use its value as the port)
Select or create container Apps environment

Consider saving this info in workspace settings to make it easier when deploying the app next time.

Fixed by #292


Fix types in our whiteboard example

I found these type issues after trying to migrate one example to the new typed APIs I'm working on. Yay, I guess? 🙌

Btw I'm almost done with my examples branch (https://github.com/liveblocks/liveblocks/compare/feature/examples), if you're planning on bigger changes like moving them to the new typed API for example we should make sure to coordinate.

No worries! I'm not touching the examples at all (yet). This was just something I found while locally testing the waters against a random example, and figured it would be nice to port these now-known bugs back. Don't worry about me, and change the examples as you need to. I can make changes to the examples later on after you're done.


Include Windows Server 1709 based images for samples published to Docker Hub

Build the samples pushed to Docker Hub against a Windows Server 1709 base images.  These can be included in the manifest backed tags.

Fixed by #91


Library feature

Hi. Just a few questions.

What are the plans for this library?
Will it be maintained?
What is the current state?

We are actively using this library and update it to a new react native version if we have time for it.
Next supported React Native version should be 0.71 or higher. This brings huge improvements to the compatibility and publishing of this library, see https://github.com/reactwg/react-native-new-architecture/discussions/105. But until then the library is only compatible with react native 0.69.4.
If you find bugs, we are open for PRs.

Thanks for the quick response!
I am a Kotlin developer working on an RN project with Koltin Multiplatform Sdk. I'm ofc working on the SDK part.
In our setup, we publish KMM SDK as a library for RN Android, and for the iOS part, we pack it as XCFramework, and both of them are moved into the RN project.
In my day-to-day life, I need to change the RN bridging code in Android Kotlin and iOS Swift code. While working on the SDK, the Android RN project is not enabled in settings.gradle, so we have no code completion in the RN Android module, and we need to open Xcode to update the code.
So I decided to change it. I created a separate KMM module, "bridge", where I can put all the bridging code nice and tidy. I moved Android RN stuff, and all worked as expected, no surprise. Moving iOS bridging code, and converting it to Kotlin so it works with ObjC is a different story of trial and error. But then I found your library, and it looks like my problem was your problem before, and you solved it, which is excellent!
Question:
If the library is currently tied to the React Native version 0.69.4, is it backwards compatible too? Or does it need to be the exact version? We are currently on RN 0.67.3.

Hi,
Regarding your question, technically supporting different  RN version is possible, but currently because old RN Android versions are not available in maven repo you get an error wenn your local RN version is not the same as the version specified in the library. Maybe we can change the specific version to a wildcard in Gradle.
Next week I have to work on toolkit to improve the EventEmitter support on iOS. Maybe I can check on that too.

@charlee-dev we made a new release with updated react native version, you may want to try to use this release in your app with older react native version. You may need to build the toolkit locally to adjust the rn version. There is now also an example project which may help you integrate the toolkit.

Thank you. I'll give it a go soon. I will let you know if I need help, but I'll open a new issue, if I do. 🤞


Cannot pass compilation flags to jbuilder utop

I need to at least be able to pass flags to disable some fatal warnings 31, otherwise the compilation fails for my project:
      ocamlc infer/.utop/utop.bc (exit 2)
(cd _build/default && /home/jul/.opam/infer-4.04.2/bin/ocamlc.opt -w -40 -g -o infer/.utop/utop.bc -linkall -I /home/jul/.opam/infer-4.04.2/lib/ANSITerminal -I /home/jul/.opam/infer-4.04.2/lib/atd -I /home/jul/.opam/infer-4.04.2/lib/atdgen -I /home/jul/.opam/infer-4.04.2/lib/base -I /home/jul/.opam/infer-4.04.2/lib/base/caml -I /home/jul/.opam/infer-4.04.2/lib/base/shadow_stdlib -I /home/jul/.opam/infer-4.04.2/lib/bin_prot -I /home/jul/.opam/infer-4.04.2/lib/bin_prot/shape -I /home/jul/.opam/infer-4.04.2/lib/biniou -I /home/jul/.opam/infer-4.04.2/lib/bytes -I /home/jul/.opam/infer-4.04.2/lib/camlzip/../zip -I /home/jul/.opam/infer-4.04.2/lib/camomile -I /home/jul/.opam/infer-4.04.2/lib/cmdliner -I /home/jul/.opam/infer-4.04.2/lib/core -I /home/jul/.opam/infer-4.04.2/lib/core_kernel -I /home/jul/.opam/infer-4.04.2/lib/core_kernel/base_for_tests -I /home/jul/.opam/infer-4.04.2/lib/easy-format -I /home/jul/.opam/infer-4.04.2/lib/extlib -I /home/jul/.opam/infer-4.04.2/lib/fieldslib -I /home/jul/.opam/infer-4.04.2/lib/findlib -I /home/jul/.opam/infer-4.04.2/lib/jane-street-headers -I /home/jul/.opam/infer-4.04.2/lib/javalib -I /home/jul/.opam/infer-4.04.2/lib/lambda-term -I /home/jul/.opam/infer-4.04.2/lib/lwt -I /home/jul/.opam/infer-4.04.2/lib/lwt_react -I /home/jul/.opam/infer-4.04.2/lib/num -I /home/jul/.opam/infer-4.04.2/lib/oUnit -I /home/jul/.opam/infer-4.04.2/lib/ocaml -I /home/jul/.opam/infer-4.04.2/lib/ocaml/compiler-libs -I /home/jul/.opam/infer-4.04.2/lib/ocaml/threads -I /home/jul/.opam/infer-4.04.2/lib/parmap -I /home/jul/.opam/infer-4.04.2/lib/ppx_assert/runtime-lib -I /home/jul/.opam/infer-4.04.2/lib/ppx_bench/runtime-lib -I /home/jul/.opam/infer-4.04.2/lib/ppx_compare/runtime-lib -I /home/jul/.opam/infer-4.04.2/lib/ppx_expect/collector -I /home/jul/.opam/infer-4.04.2/lib/ppx_expect/common -I /home/jul/.opam/infer-4.04.2/lib/ppx_expect/config -I /home/jul/.opam/infer-4.04.2/lib/ppx_hash/runtime-lib -I /home/jul/.opam/infer-4.04.2/lib/ppx_inline_test/config -I /home/jul/.opam/infer-4.04.2/lib/ppx_inline_test/runtime-lib -I /home/jul/.opam/infer-4.04.2/lib/ptrees -I /home/jul/.opam/infer-4.04.2/lib/react -I /home/jul/.opam/infer-4.04.2/lib/result -I /home/jul/.opam/infer-4.04.2/lib/sawja -I /home/jul/.opam/infer-4.04.2/lib/sexplib -I /home/jul/.opam/infer-4.04.2/lib/sexplib/0 -I /home/jul/.opam/infer-4.04.2/lib/sexplib/unix -I /home/jul/.opam/infer-4.04.2/lib/spawn -I /home/jul/.opam/infer-4.04.2/lib/stdio -I /home/jul/.opam/infer-4.04.2/lib/typerep -I /home/jul/.opam/infer-4.04.2/lib/utop -I /home/jul/.opam/infer-4.04.2/lib/variantslib -I /home/jul/.opam/infer-4.04.2/lib/xmlm -I /home/jul/.opam/infer-4.04.2/lib/yojson -I /home/jul/.opam/infer-4.04.2/lib/zed -I /home/jul/.opam/infer-4.04.2/lib/zip -I infer /home/jul/.opam/infer-4.04.2/lib/ocaml/unix.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/bigarray.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/compiler-libs/ocamlcommon.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/compiler-libs/ocamlbytecomp.cma /home/jul/.opam/infer-4.04.2/lib/findlib/findlib.cma /home/jul/.opam/infer-4.04.2/lib/result/result.cma /home/jul/.opam/infer-4.04.2/lib/lwt/lwt.cma /home/jul/.opam/infer-4.04.2/lib/lwt/lwt-log.cma /home/jul/.opam/infer-4.04.2/lib/react/react.cma /home/jul/.opam/infer-4.04.2/lib/camomile/camomile.cma /home/jul/.opam/infer-4.04.2/lib/lwt/lwt-unix.cma /home/jul/.opam/infer-4.04.2/lib/lwt_react/lwt_react.cma /home/jul/.opam/infer-4.04.2/lib/zed/zed.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/threads/threads.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/compiler-libs/ocamltoplevel.cma /home/jul/.opam/infer-4.04.2/lib/findlib/findlib_top.cma /home/jul/.opam/infer-4.04.2/lib/lambda-term/lambda_term.cma /home/jul/.opam/infer-4.04.2/lib/utop/uTop.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/str.cma /home/jul/.opam/infer-4.04.2/lib/extlib/extLib.cma /home/jul/.opam/infer-4.04.2/lib/camlzip/../zip/zip.cma /home/jul/.opam/infer-4.04.2/lib/ptrees/ptrees.cma /home/jul/.opam/infer-4.04.2/lib/zip/zip.cma /home/jul/.opam/infer-4.04.2/lib/javalib/javalib.cma /home/jul/.opam/infer-4.04.2/lib/easy-format/easy_format.cmo /home/jul/.opam/infer-4.04.2/lib/biniou/biniou.cma /home/jul/.opam/infer-4.04.2/lib/atd/atd.cma /home/jul/.opam/infer-4.04.2/lib/yojson/yojson.cmo /home/jul/.opam/infer-4.04.2/lib/base/caml/caml.cma /home/jul/.opam/infer-4.04.2/lib/base/shadow_stdlib/shadow_stdlib.cma /home/jul/.opam/infer-4.04.2/lib/sexplib/0/sexplib0.cma /home/jul/.opam/infer-4.04.2/lib/base/base.cma /home/jul/.opam/infer-4.04.2/lib/fieldslib/fieldslib.cma /home/jul/.opam/infer-4.04.2/lib/ppx_compare/runtime-lib/ppx_compare_lib.cma /home/jul/.opam/infer-4.04.2/lib/sexplib/sexplib.cma /home/jul/.opam/infer-4.04.2/lib/variantslib/variantslib.cma /home/jul/.opam/infer-4.04.2/lib/bin_prot/shape/bin_shape_lib.cma /home/jul/.opam/infer-4.04.2/lib/ppx_inline_test/config/inline_test_config.cma /home/jul/.opam/infer-4.04.2/lib/ppx_hash/runtime-lib/ppx_hash_lib.cma /home/jul/.opam/infer-4.04.2/lib/ppx_inline_test/runtime-lib/ppx_inline_test_lib.cma /home/jul/.opam/infer-4.04.2/lib/ocaml/nums.cma /home/jul/.opam/infer-4.04.2/lib/ppx_expect/common/expect_test_common.cma /home/jul/.opam/infer-4.04.2/lib/ppx_expect/config/expect_test_config.cma /home/jul/.opam/infer-4.04.2/lib/bin_prot/bin_prot.cma /home/jul/.opam/infer-4.04.2/lib/core_kernel/base_for_tests/base_for_tests.cma /home/jul/.opam/infer-4.04.2/lib/jane-street-headers/jane_street_headers.cma /home/jul/.opam/infer-4.04.2/lib/ppx_assert/runtime-lib/ppx_assert_lib.cma /home/jul/.opam/infer-4.04.2/lib/ppx_bench/runtime-lib/ppx_bench_lib.cma /home/jul/.opam/infer-4.04.2/lib/ppx_expect/collector/expect_test_collector.cma /home/jul/.opam/infer-4.04.2/lib/stdio/stdio.cma /home/jul/.opam/infer-4.04.2/lib/typerep/typerep_lib.cma /home/jul/.opam/infer-4.04.2/lib/core_kernel/core_kernel.cma /home/jul/.opam/infer-4.04.2/lib/sexplib/unix/sexplib_unix.cma /home/jul/.opam/infer-4.04.2/lib/spawn/spawn.cma /home/jul/.opam/infer-4.04.2/lib/oUnit/oUnitAdvanced.cma /home/jul/.opam/infer-4.04.2/lib/sawja/sawja.cma /home/jul/.opam/infer-4.04.2/lib/ANSITerminal/ANSITerminal.cma /home/jul/.opam/infer-4.04.2/lib/atdgen/atdgen.cma /home/jul/.opam/infer-4.04.2/lib/cmdliner/cmdliner.cma /home/jul/.opam/infer-4.04.2/lib/core/core.cma /home/jul/.opam/infer-4.04.2/lib/oUnit/oUnit.cma /home/jul/.opam/infer-4.04.2/lib/parmap/parmap.cma /home/jul/.opam/infer-4.04.2/lib/xmlm/xmlm.cma infer/InferBaseStdlib.cma infer/InferGenerated.cma infer/InferModules.cma infer/.utop/utop.cmo)
File "/home/jul/.opam/infer-4.04.2/lib/extlib/extLib.cma(UChar)", line 1:
Warning 31: files /home/jul/.opam/infer-4.04.2/lib/extlib/extLib.cma(UChar) and /home/jul/.opam/infer-4.04.2/lib/camomile/camomile.cma(UChar) both define a module named UChar
File "/home/jul/.opam/infer-4.04.2/lib/extlib/extLib.cma(UTF8)", line 1:
Warning 31: files /home/jul/.opam/infer-4.04.2/lib/extlib/extLib.cma(UTF8) and /home/jul/.opam/infer-4.04.2/lib/camomile/camomile.cma(UTF8) both define a module named UTF8
File "/home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Zlib)", line 1:
Warning 31: files /home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Zlib) and /home/jul/.opam/infer-4.04.2/lib/camlzip/../zip/zip.cma(Zlib) both define a module named Zlib
File "/home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Zip)", line 1:
Warning 31: files /home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Zip) and /home/jul/.opam/infer-4.04.2/lib/camlzip/../zip/zip.cma(Zip) both define a module named Zip
File "/home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Gzip)", line 1:
Warning 31: files /home/jul/.opam/infer-4.04.2/lib/zip/zip.cma(Gzip) and /home/jul/.opam/infer-4.04.2/lib/camlzip/../zip/zip.cma(Gzip) both define a module named Gzip
File "_none_", line 1:
Error: Some fatal warnings were triggered (5 occurrences)

Note that this issue also possibly exposes a bug in jbuilder's handling of the directory option in findlib.
Those zip.cma's that jbuilder is complaining about are in fact equivalent. camlzip is aliases to zip as we can see in the META:
https://github.com/xavierleroy/camlzip/blob/master/META-camlzip https://github.com/xavierleroy/camlzip/blob/master/META-zip
Although this could also be a bug in camlzip as it installs all of its artifacts twice. Into lib/camlzip and lib/zip.

The camlzip behaviour is because for a long time camlzip didn't build with findlib and so people (= individuals and OS packagers, I think) created META files and some people used zip for the package and some people used camlzip!

@dra27 Ouch :) . findlib seems doesn't seem to handle this either btw.
This fails as well:
ocamlfind ocamlopt -package camlzip,zip -linkall -linkpkg x.ml -w +31 -o x.opt

Perhaps this means that we should just fix camlzip. It seems like camlzip (or zip) should really be just an alias using requires = "..." then

Seems like these zip packages should indeed be fixed. However there is also a conflict between extlib and camomile.  This is a bit unfortunate since camomile doesn't install the cmi files for UTF8 or Uchar, so they are only accessible through CamomileLibrary....
I didn't know you could link a byte-code executable with two toplevel modules of the same name. In the short term, maybe we should just pass -w -31 when building custom utops.

Disabling the warnings seems like a good workaround.
Are there any negative consequences possible to disabling this warning?

I did some experiments and when a module is linked twice and the interfaces don't match, it is an error. So we can't get a segfault, but we might get weird behaviors (duplicated global states, etc...).
Additionally, it seems that we only get the warning if both modules are pulled. For toplevels this will always be the case as we link with -linkall. This might explain why these errors go unnoticed.
So turning warning 31 into a non-fatal warning seems OK.

I've made a PR for camlzip and the warning is no longer fatal. So this is now fixed.


Fix for #41. support physics_pipeline_active false in all cases.

Fix for #41.
Add back support for physics_pipeline_active set to false when time_dependent_number_of_timesteps is false.
Fix tested with my Kataster mini-game that found the issue when migrating to bevy_rapier 0.6.2

Thanks!


How to use direct link Youtube ?

Hi , for our function we have the following code :
 $('.lb-video').alertOnClick({             'video': 'https://www.youtube.com/embed/aVO2SKs9BK8',             'size': 'lg'     });
But want to use the direct link ( https://www.youtube.com/watch?v=aVO2SKs9BK8 ) without embed, is that possible?
Thanks !

Do you mean you want it to lead to the video on youtube on click of '.lb-video' or you want it to popup and show a link?

To have '.lb-video' link to that video, you don't need jAlert. You just do an onclick handler with a window.location.href = 'VIDEO_URL';

To have the link to youtube in a jalert, just use the content parameter

It is that when I run the following code but the video does not load :
$('.lb-video').alertOnClick({ 'video': 'https://www.youtube.com/watch?v=aVO2SKs9BK8', 'size': 'lg' });
https://www.youtube.com/embed/aVO2SKs9BK8 vs https://www.youtube.com/watch?v=aVO2SKs9BK8
We do not need the direct link as a href, is the code that we show in this question jAlert .

Oh Sorry, I see what you mean. The URL without /embed/, not the url to the video without embedding it. No, I do not believe that is possible.

Please keep it as a suggestion for a future release, Thanks !


React warning

Thank you for the great library. I'm using it via react-autosuggest.
I've noticed that I get a warning when I have multiple selections suggestions:
Warning: Each child in an array or iterator should have a unique "key" prop. Check the render method of `Autowhatever`. See https://fb.me/react-warning-keys for more information

It looks like renderItemsList(...) isn't adding a key to the items it returns.

@ZachBray What do you mean by multiple selections? (Do you mean multiple sections?)
What React version are you using? I was under impression that specifying a key is optional in the latest React versions.
Could you share a Codepen that demonstrates the issue?

I'm using React v0.14.7

I believe this is not an issue anymore since 3.2.0. Let me know if you still this error.


[imdb] BUG: Unhandled error in plugin imdb: 'NoneType' object has no attribute 'find'

# flexget --version
1.2.425.dev
Latest release: 1.2.424

2016-01-08 23:31 DEBUG    imdb_lookup   Movies-Filtered movie `Eat the Rich: The Cannibal Murders` age 16 expires in 82 days
2016-01-08 23:31 DEBUG    imdb          Movies-Filtered Didn't accept `Eat the Rich: The Cannibal Murders` because of rule(s) min_score (2.6 < 5.5), min_votes (36 < 500)
2016-01-08 23:31 DEBUG    imdb_lookup   Movies-Filtered No title passed. Lookup for tt1762233
2016-01-08 23:31 VERBOSE  imdb_lookup   Movies-Filtered Parsing imdb for `Enchanted Kingdom 3D [2013] by Patrick Morris and Neil Nightingale - BD50 / Blu-ray / ISO / 1080p / 3D`
2016-01-08 23:31 DEBUG    requests      Movies-Filtered Fetching http://www.imdb.com/title/tt1762233/
2016-01-08 23:31 CRITICAL task          Movies-Filtered BUG: Unhandled error in plugin imdb: 'NoneType' object has no attribute 'find'
2016-01-08 23:31 CRITICAL manager       Movies-Filtered An unexpected crash has occurred. Writing crash report to /home/wolfgang/.download/flexget/crash_report.2<IP_ADDRESS>118907817.log
2016-01-08 23:31 DEBUG    manager       Movies-Filtered Traceback:
Traceback (most recent call last):
  File "/home/wolfgang/.download/flexget/flexget/task.py", line 438, in __run_plugin
    return method(*args, **kwargs)
  File "/home/wolfgang/.download/flexget/flexget/event.py", line 22, in __call__
    return self.func(*args, **kwargs)
  File "/home/wolfgang/.download/flexget/flexget/plugins/filter/imdb.py", line 106, in on_task_filter
    lookup(entry)
  File "/home/wolfgang/.download/flexget/flexget/plugin.py", line 124, in wrapped_func
    return func(*args, **kwargs)
  File "/home/wolfgang/.download/flexget/flexget/utils/database.py", line 30, in wrapper
    return func(*args, **kwargs)
  File "/home/wolfgang/.download/flexget/flexget/plugins/metainfo/imdb_lookup.py", line 374, in lookup
    movie = self._parse_new_movie(entry['imdb_url'], session)
  File "/home/wolfgang/.download/flexget/flexget/plugins/metainfo/imdb_lookup.py", line 405, in _parse_new_movie
    parser.parse(imdb_url)
  File "/home/wolfgang/.download/flexget/flexget/utils/imdb.py", line 243, in parse
    self.name = name_elem.find(text=True, recursive=False).strip()
AttributeError: 'NoneType' object has no attribute 'find'
2016-01-08 23:31 WARNING  task          Movies-Filtered Aborting task (plugin: imdb)
2016-01-08 23:31 DEBUG    cookies       Movies-Filtered Removing urllib2 opener
2016-01-08 23:31 DEBUG    backlog       Movies-Filtered Remembering all entries to backlog because of task abort.

I'm having the exact same issue, maybe an another layout change in IMDb?

I have with version 1.2.422 also the same...
# flexget -V
1.2.422
Latest release: 1.2.424

Same here with the latest version: 2016-01-09 09:04 ERROR    lazy_lookup   nC_movie-HUN    Unhandled error in lazy lookup plugin 2016-01-09 09:04 CRITICAL manager       nC_movie-HUN    An unexpected crash has occurred. Writing crash report to /home/osmc/.flexget/crash_report.2<IP_ADDRESS>402425088.log 2016-01-09 10:24 ERROR    lazy_lookup   nC_movie-HUN    Unhandled error in lazy lookup plugin Traceback (most recent call last):   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/lazy_dict.py", line 36, in __getitem__     func(self.store)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/imdb_lookup.py", line 235, in lazy_loader     self.lookup(entry)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugin.py", line 124, in wrapped_func     return func(*args, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 30, in wrapper     return func(*args, **kwargs)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/imdb_lookup.py", line 374, in lookup     movie = self._parse_new_movie(entry['imdb_url'], session)   File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/imdb_lookup.py", line 405, in _parse_new_movie     parser.parse(imdb_url)   File "/usr/local/lib/python2.7/dist-packages/flexget/utils/imdb.py", line 243, in parse     self.name = name_elem.find(text=True, recursive=False).strip() AttributeError: 'NoneType' object has no attribute 'find'

same here, waitingfor update :)

Thanks for the quick fix, installed from github and it's working.

OMG
I have this again now...
'''
2016-01-23 18:57 ERROR    lazy_lookup   get_favmoviesremux Unhandled error in lazy lookup plugin
2016-01-23 18:57 CRITICAL manager       get_favmoviesremux An unexpected crash has occurred. Writing crash report to /root/.flexget/crash_report.2<IP_ADDRESS>711908021.log
2016-01-23 18:57 ERROR    lazy_lookup   get_favmoviesremux Unhandled error in lazy lookup plugin
2016-01-23 18:57 CRITICAL manager       get_favmoviesremux An unexpected crash has occurred. Writing crash report to /root/.flexget/crash_report.2<IP_ADDRESS>714707263.log
2016-01-23 18:57 ERROR    lazy_lookup   get_favmoviesremux Unhandled error in lazy lookup plugin
2016-01-23 18:57 CRITICAL manager       get_favmoviesremux An unexpected crash has occurred. Writing crash report to /root/.flexget/crash_report.2<IP_ADDRESS>717670299.log
2016-01-23 18:57 CRITICAL task          get_movies   BUG: Unhandled error in plugin imdb: 'NoneType' object has no attribute 'find'
2016-01-23 18:57 CRITICAL manager       get_movies   An unexpected crash has occurred. Writing crash report to /root/.flexget/crash_report.2<IP_ADDRESS>723206231.log
2016-01-23 18:57 WARNING  task          get_movies   Aborting task (plugin: imdb)
2016-01-23 18:57 CRITICAL task          get_movies BUG: Unhandled error in plugin imdb: 'NoneType' object has no attribute 'find'
2016-01-23 18:57 CRITICAL manager       get_movies An unexpected crash has occurred. Writing crash report to /root/.flexget/crash_report.2<IP_ADDRESS>726324497.log
2016-01-23 18:57 WARNING  task          get_movies Aborting task (plugin: imdb)
2016-01-23 19:04 INFO     remember_rej  emailtask       Remembering rejection of Hawaii.Five-0.2010.S06E13
2016-01-23 19:04 INFO     remember_rej  emailtask       Remembering rejection of The.Intern.2015
2016-01-23 19:10 WARNING  details       drop_series     Task didn't produce any entries. This is likely due to a mis-configured or non-functional input.
2016-01-23 19:10 WARNING  details       drop_series_seasons Task didn't produce any entries. This is likely due to a mis-configured or non-functional input.
2016-01-23 19:10 WARNING  details       drop_movies     Task didn't produce any entries. This is likely due to a mis-configured or non-functional input.
'''

End of the crash report log:
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/flexget/task.py", line 438, in __run_plugin
    return method(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/event.py", line 22, in __call__
    return self.func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/filter/imdb.py", line 106, in on_task_filter
    lookup(entry)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugin.py", line 124, in wrapped_func
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/utils/database.py", line 30, in wrapper
    return func(*args, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/imdb_lookup.py", line 374, in lookup
    movie = self._parse_new_movie(entry['imdb_url'], session)
  File "/usr/local/lib/python2.7/dist-packages/flexget/plugins/metainfo/imdb_lookup.py", line 405, in _parse_new_movie
    parser.parse(imdb_url)
  File "/usr/local/lib/python2.7/dist-packages/flexget/utils/imdb.py", line 243, in parse
    self.name = name_elem.find(text=True, recursive=False).strip()
AttributeError: 'NoneType' object has no attribute 'find'

Do you have the latest version? It doesn't look like you have... Check with flexget -V

oh, a kudos for you!
you are right
somehow today morning the normal flexget installed systemwide was started:
root      4231  1.1  6.2<PHONE_NUMBER>00 ?       Sl   09:08   7:04 /usr/bin/python /usr/local/bin/flexget daemon start --daemonize
and not the git version
root     24187  0.2  1.1  83876 46268 ?        Sl   19:39   0:00 /root/flexget-dev/bin/python /root/flexget-dev/bin/flexget daemon start --daemonize
now it sould be fixed, thanks for the good catch
sorry for the false alarm ;-)


Make drag handles follow cursor more closely

To test:

Create a plan and run a simulation to populate multiple rows
Verify that upon resizing the drag handle always follow the position of the cursor while respecting min/max sizes.
Open the error Console
Verify that resizing also follows the cursor in a similar manner.

Much better! Two comments:

Could you do this for RowHeaderDragHandleWidth.svelte as well?
Seeing the cursor flip between resize and default when dragging row height handles. Looks like that behavior is not from this PR, may be related to the hover+active state styling for home reason not working in this case? And RowHeaderDragHandleWidth is behaving similarly. Any ideas? Could also be addressed in a separate PR, I could take a look too.

Much better! Two comments:

Could you do this for RowHeaderDragHandleWidth.svelte as well?
Seeing the cursor flip between resize and default when dragging row height handles. Looks like that behavior is not from this PR, may be related to the hover+active state styling for home reason not working in this case? And RowHeaderDragHandleWidth is behaving similarly. Any ideas? Could also be addressed in a separate PR, I could take a look too.

Will do! Oh I see the flickering now too. Is this what you were mentioning before? I thought you were talking about the background color flickering.

@AaronPlave the flickering thing might need to be a separate fix


IPv6 support for DigitalOcean dynamic DNS

Hello,
This PR implements IPv6 support for the DigitalOcean dynamic DNS plugin. In fact, the changes are only minor and should not be surprising at all.
Testing
Logs are from bottom to top. Retrieved via the web interface (System -> Log Files -> General).
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns: Dynamic DNS: (Success) Record ID 111111111 updated to A:B:C:D |
-- | -- | -- | --
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns:  Dynamic DNS: updating cache file  /var/cache/dyndns_wan_example.com_1_v6.cache:  A:B:C:D |
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns: Dynamic DNS (example.com): A:B:C:D extracted |
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns: Dynamic DNS (example.com): Current Service: digitalocean-v6 |
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns: Dynamic DNS (example.com): _checkStatus() starting. |
2021-03-11T06:35:04 | opnsense[82969] | /usr/local/etc/rc.dyndns: Dynamic DNS (example.com via DigitalOcean (v6)): _update() starting. |

Thanks for the review and your efforts for the project!
BR,
Jonas

Same as 4140a8afb04


Correct 0.3 docs to reference 0.3 source

Previously, the docs for version 0.3 would point to the source code on
branch 0.2. This corrects the link to point to the 0.3 source.
I had initially seen this behavior from the docs.rs page:
https://docs.rs/iced/0.3.0/iced/index.html

If I recall correctly, the 0.3 docs mention 0.2 in a lot of places- I'll see if I can get links to specific examples of this

Here are the ones I found at a glance, in descending order of how long they are:

https://github.com/iced-rs/iced/blob/0.3/src/sandbox.rs#L39-L51
https://github.com/iced-rs/iced/blob/0.3/futures/src/subscription.rs#L128-L130
https://github.com/iced-rs/iced/blob/master/native/src/widget.rs#L96-L101
https://github.com/iced-rs/iced/blob/0.3/wgpu/src/widget/pane_grid.rs#L9
https://github.com/iced-rs/iced/blob/0.3/web/src/lib.rs#L52

Note: I haven't checked if these are fixed on the main branch

It also seems like your PR is requesting a merge into the master branch instead of 0.3

Great call on the last comment, thank you! I've updated the target branch

Good point on all of the other 0.2s as well, I can update those and hunt for more if that would be useful and this branch is likely to be merged.

Thanks!
This was fixed in master recently and we will soon release 0.4.0!


Fix note serialization

I noticed about how we serialize output note details here: we serialize each note as a tuple (NoteId, Note) while just serializing Notes should be sufficient as we can always compute NoteId from Note (so, serializing NoteIds incurs an extra overhead of 32 bytes per note).

https://github.com/0xPolygonMiden/miden-base/pull/485#discussion_r1512531529

Closed by https://github.com/0xPolygonMiden/miden-base/pull/543


Exception in an attempt to remove and add action group for a metric alert rule

This is autogenerated. Please review and update as needed.
Describe the bug
Command Name
az monitor metrics alert update
Errors:
'MetricAlertAction' object has no attribute 'webhook_properties'
Traceback (most recent call last):
Local\Temp\pip-unpacked-wheel-taryuzhh\knack\cli.py, ln 233, in invoke
azure\cli\core\commands\__init__.py, ln 660, in execute
azure\cli\core\commands\__init__.py, ln 723, in _run_jobs_serially
azure\cli\core\commands\__init__.py, ln 715, in _run_job
azure\cli\command_modules\monitor\_exception_handler.py, ln 23, in exception_handler
azure\cli\core\commands\__init__.py, ln 694, in _run_job
azure\cli\core\commands\__init__.py, ln 331, in __call__
azure\cli\core\commands\arm.py, ln 527, in handler
cli\command_modules\monitor\operations\metric_alert.py, ln 96, in update_metric_alert
AttributeError: 'MetricAlertAction' object has no attribute 'webhook_properties'

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

Put any pre-requisite steps here...
az monitor metrics alert update --ids {} --remove-action {} --add-action {}

Expected Behavior
Environment Summary
Windows-10-10.0.19041-SP0
Python 3.6.8
Installer: MSI

azure-cli 2.20.0

Additional Context

The az monitor metrics alert list command returns the json in the following format:
[
  {
    "actions": [
      {
        "actionGroupId": "/subscriptions/<guid>/resourceGroups/<resource-group>/providers/microsoft.insights/actiongroups/<action-group-name>",
        "webHookProperties": {}
      }
    ],

]

so the property name in response is webHookProperties, not the webhook_properties that is mentioned in exception.

monitor

Please reinstall Azure-CLI and make sure its requirements are updated as well.

Thanks, @kairu-ms!
I've tried to uninstall/install the Azure CLI msi. The issue is still reproducible.
I'm not sure about updating requirements though. I haven't found any info about that. Could you provide the details, please?

Thanks for your feedback. There's an issue in CLI and I will fix it in next version. Currently it can be workaround by removing that existing action and then adding id again. For example
az monitor metrics alert update --ids {...} --remove-action {action-to-update} --add-action {action-to-update} {properties}

Thank you, @kairu-ms!
I did some more testing.
It looks like the issue that I experience is a bit different.
So, first remark - my scenario was about replacing one action with the other, so actionGroupIds are different.
And second - I've tried to execute just --add-action and got the same issue:
az monitor metrics alert update --ids "<metric-alert-id>" --add-action "/subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group>" webHookProperties={"test":"test"}

It failed with the same error: ERROR: 'MetricAlertAction' object has no attribute 'webhook_properties'

d second - I've tried to execute just --add-action and got the same issue:

That's because /subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group> already exists. I think the following command can work for your scenario.
az monitor metrics alert update --ids "<metric-alert-id>" --remove-action "/subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group>" --add-action "/subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group>" test=test

In order to workaround the bug, you should add the actionGroupId behand --remove-action first and then use it in --add-action again.

d second - I've tried to execute just --add-action and got the same issue:

That's because /subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group> already exists. I think the following command can work for your scenario.
az monitor metrics alert update --ids "<metric-alert-id>" --remove-action "/subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group>" --add-action "/subscriptions/<subs>/resourceGroups/<rg>/providers/microsoft.insights/actiongroups/<action-group>" test=test

Yes, that works! Thank you! I got documentation incorrectly. Now I know that properties stands for webHookProperties.


PG Reinforce

While using Policy Gradients for Reinforce Learning you are using discounted reward. But I think in the david silver lecture he says the reward are sampled from a distribution. But why do you use discounted reward.

Okay I did some looking around and found that if you sampled rewards(as discussed in Silvers Lecture) at each time step in the episode. We would require a lot training iterations. But I think the formula you are using is alpha_ij * ( r - b_ij) * gradient. Right ??


Midi fonts

Are there any plans of supporting midi fonts?

It would be great if NAudio provided support for this. It would alliviate the need for fluidsynth use.


Mouse Keys Mode v2 Down+Left

First off, thank you for the work on this package it is really fantastic.
I have come to really like Mouse Keys Mode v2 but have noticed that holding d+h+j does not make the cursor move down and to the left. Other diagonals work (e.g., d+k+l moves up and to the right) but down and left for some reason is not working.
I would very much appreciate advice as to how to fix this.
Thank you,
Justin

This is strange, I have it working for me.

Strange, I just noticed that its only a problem with my external keyboard and not my internal keyboard.


Hung TCPConnection can interfere with Pony runtime shutdown

While fiddling with Pony 0.24.4, I've discovered that a suspended/hung/machine crashed TCP peer can interfere with the Pony runtime's shutdown.  "Interfere" means blocking the runtime's timely shutdown due to network sockets remaining partially open and thus causing the ASIO subsystem to continue being noisy.
General steps to reproduce:

Run a Pony program that opens a TCP socket to a peer.
Suspend the peer's OS process with Control-z/SIGSTOP
The local Pony program attempts to shutdown by dispose()ing of the socket (and any others), stopping all remaining timers from firing, etc.
The Pony program will not exit until the peer OS process is unsuspended (e.g., by SIGCONT), killed, or the peer's host crashes.

A demo program is at https://gist.github.com/slfritchie/558f44bcef5a29ad4ae9eaf208723bbc.  Use as follows:

Use a program like netcat to listen to TCP port 8888 on the localhost interface, e.g., nc -l 8888
Compile and run hang-bug.pony on the same machine as netcat.
In less than 5 seconds after running hang-bug, press Control-z to suspend the netcat process.
The hang-bug program will not exit until the netcat process is resumed or killed.

The last message printed is Ticker, dispose socket

The hang-bug program will exit 5 seconds after starting if the netcat process's execution is not interfered with.
AFAICT, this delay is a feature of the runtime.  TCP sockets are implemented by actors, and reads & writes & dispose() requests with sockets involve async messaging as any other Pony actor.  In keeping with synchronous socket behavior of a quick sequence of several writes followed by a close by something written in C for a POSIX OS, if the TCP socket isn't closed prematurely, we expect all bytes written to be sent prior to the close.  Any bytes not written due to flow control would be signalled by the return value of thewrite/writev/send/etc system calls.
Pony's async messaging doesn't give the sending actor direct feedback of the system call return status; the TCPConnection actor is responsible for buffering not-yet-sent data and managing yet-to-be-read bytes from the socket.

If any data remains buffered by the TCPConnection actor in the _pending_writev array, the socket will not be closed, and the ASIO subsystem will remain noisy.
TCPConnection needs to observe a read of 0 bytes from the socket to trigger its final closing logic.  If the remote peer is suspended/hung/crashed, that event is delayed for an unknown period of time.
In a related area of regular vs. hard socket close, TCPConnection will use the hard close path if dispose() is called and the actor is in muted state.  However, if the actor is in throttled state, the hard close path is not taken.  I think there's a good argument to make that a hard close is appropriate when in throttled state.

Possible remedies might include:
a. Adding a hard_close() behavior to give a "close the socket NOW" option to socket users.
b. Add an optional timer + per-socket configurable that starts when dispose() is called.  If the timer fires, and the socket isn't yet fully closed, then the socket will go the hard close path.

Notes from today dev sync meeting, which was quite small & so might not have input from Those Who Have An Opinion.

Joe would like to see an RFC developed.
Joe suggested splitting the buffered writes and pending reads into separate remedies.
Perhaps not enough consensus yet on what to do about dispose() when the socket is throttled.


[frontend] Parse nv_tma_desc attribute when compiling from ttgir

To support loading a kernel using TMA descriptors from ttgir we need to parse the attribute out of the signature to get the proper type.

Obligatory: https://stackoverflow.com/a/1732454/3154996
Sorry, I should have added this support a while ago after landing grid_constant. I'll fix the PTX side tomorrow.
In the medium term I will replace the regex with proper parsing. For MLIR this is definitely possible with proper Python bindings. I think it may be possible for PTX as well, have to dig deeper: https://docs.nvidia.com/cuda/ptx-compiler-api/index.html


the build workflow is failing sometimes with the error FileNotFoundError

the workflow is failing sometimes with the error FileNotFoundError while going poetry install which is an old issue with poetry that seems to happen with certain environments more than others and hasn't gotten attention until recently, it is caused by a parallel pip install (Race condition between threads). no fix has been released yet.
there is a workaround for the affected systems by doing poetry config experimental.new-installer false or on recent poetry versions poetry config installer.max-workers=1.
probably we need to use this in the Dockerfile for the reliability of the workflow.

fixed on bb2ffaab1f62d312f5a6ca6f5b1cec57572fae15
the workflow turned green again after pushing this commit.

verified


Add Scoop resource

In addition to chocolatey, Scoop is another popular option to install windows applications.
https://scoop.sh/

Sounds like a reasonable suggestion since a lot of people use this 👍


[Bug]: Citation key formula not generating lowercase for Chinese authors

Debug log ID
ISJLK9NE-refs-apse
What happened?
I encountered a bug in the citation key formula of Better BibTeX for Zotero. Specifically, when using the formula auth.lower+year, the generated citation key is not in lowercase for Chinese authors.
For example, I have an item with the author 作者 and the year 2023. According to the citation key formula, the expected key should be zuozhe2023. However, the actual key generated is ZuoZhe2023, which is not in lowercase as expected.
Steps to reproduce:

Set the citation key formula as auth.lower+year.
Add an item with a Chinese author and a year.
Check the generated citation key.

Expected result: The generated citation key should be in lowercase for all authors, regardless of their language.
Actual result: The generated citation key is not in lowercase for Chinese authors.
Please let me know if you need any additional information or clarification on this issue. Thank you for your help in resolving this bug.

try auth.transliterate.lower+year. Without .transliterate, the key manager will try to lowercase 作者, and javascript toLowerCase() doesn't know how to do that.

@retorquere Thanks, It works!


Added vol,lsa,tsa of 4 different pyramids and prisms , also added frustum of pyramid and another 3d solid called torus(doughnut)

Related Issuse
1)Added vol,lsa,tsa of 4 different pyramids and prisms , also added frustum of pyramid and another 3d solid called torus(doughnut)
2)Deleted the extra lines of code-> html code for table of volume,tsa,lsa was written twice so i removed one
Closes: #421
Checklist:

[x] My code follows the style guidelines of this project.
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.

Screenshots

Full screen shot

Will Done :)

Thank you


errors with arduino nano

I wanted to chec Open Roberta with my Nano.
I got lots of trouble using the connector under Linux. The tool throws Exceptions all time like
2020-10-03 18:45:04,815 [JmDNS(<IP_ADDRESS>).Timer] WARN  j.j.i.tasks.resolver.DNSResolverTask run - ServiceResolver(<IP_ADDRESS>).run() exception
java.io.IOException: Der notwendige Schlüssel ist nicht verfügbar
	at java.base/java.net.PlainDatagramSocketImpl.send0(Native Method)
	at java.base/java.net.AbstractPlainDatagramSocketImpl.send(AbstractPlainDatagramSocketImpl.java:136)
	at java.base/java.net.DatagramSocket.send(DatagramSocket.java:743)
	at javax.jmdns.impl.JmDNSImpl.send(JmDNSImpl.java:1634)
	at javax.jmdns.impl.tasks.resolver.DNSResolverTask.run(DNSResolverTask.java:73)
	at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
	at java.base/java.util.TimerThread.run(Timer.java:506)

while using mdns scanning all my interfaces without notice or user allowance. The next Exception appears when trying to save the device list:
2020-10-03 18:46:54,546 [AWT-EventQueue-0] INFO  d.f.i.r.u.d.DeviceIdEditorController actionPerformed - actionPerformed: save_and_close
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: class java.lang.String cannot be cast to class de.fhg.iais.roberta.connection.wired.WiredRobotType (java.lang.String is in module java.base of loader 'bootstrap'; de.fhg.iais.roberta.connection.wired.WiredRobotType is in unnamed module of loader 'app')
	at de.fhg.iais.roberta.ui.deviceIdEditor.DeviceIdEditorController$DeviceIdEditorViewListener.saveAndClose(DeviceIdEditorController.java:182)
	at de.fhg.iais.roberta.ui.deviceIdEditor.DeviceIdEditorController$DeviceIdEditorViewListener.actionPerformed(DeviceIdEditorController.java:99)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6401)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2764)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:117)
	at java.desktop/java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
	at java.desktop/java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:312)
	at java.desktop/java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
	at java.desktop/java.awt.Dialog.show(Dialog.java:1070)
	at java.desktop/java.awt.Component.show(Component.java:1717)
	at java.desktop/java.awt.Component.setVisible(Component.java:1664)
	at java.desktop/java.awt.Window.setVisible(Window.java:1023)
	at java.desktop/java.awt.Dialog.setVisible(Dialog.java:1005)
	at de.fhg.iais.roberta.ui.deviceIdEditor.DeviceIdEditorController.showEditor(DeviceIdEditorController.java:82)
	at de.fhg.iais.roberta.ui.main.MainController$MainViewListener.actionPerformed(MainController.java:327)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
	at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1020)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1064)
	at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636)
	at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
	at java.desktop/java.awt.Component.processEvent(Component.java:6401)
	at java.desktop/java.awt.Container.processEvent(Container.java:2263)
	at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4919)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4548)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4489)
	at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
	at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2764)
	at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
	at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
2020-10-03 18:47:06,714 [AWT-EventQueue-0] INFO  d.f.i.r.u.d.DeviceIdEditorController actionPerformed - actionPerformed: save_and_close

Took me a while to figure out what's wrong: It expects the type to be edited. After that i get:
2020-10-03 18:49:50,752 [main] INFO  d.f.i.r.c.w.a.ArduinoCommunicator uploadFile - Starting to upload program /tmp/NEPOprog.hex2611649717475875702 to /dev/ttyUSB0
2020-10-03 18:49:50,753 [main] INFO  d.f.i.r.c.w.a.ArduinoCommunicator uploadFile - Upload command used: [./resources/linux/arduino/avrdude-64, -v, -D, -C./resources/linux/arduino/avrdude.conf, -Uflash:w:/tmp/NEPOprog.hex2611649717475875702:i, -patmega328p, -carduino, -P/dev/ttyUSB0]

avrdude-64: Version 6.3-20190619
            Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
            Copyright (c) 2007-2014 Joerg Wunsch

            System wide configuration file is "./resources/linux/arduino/avrdude.conf"
            User configuration file is "/home/mdt/.avrduderc"
            User configuration file does not exist or is not a regular file, skipping

            Using Port                    : /dev/ttyUSB0
            Using Programmer              : arduino
avrdude-64: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude-64: stk500_getsync() attempt 2 of 10: not in sync: resp=0x1c
avrdude-64: stk500_getsync() attempt 3 of 10: not in sync: resp=0xfc
avrdude-64: stk500_getsync() attempt 4 of 10: not in sync: resp=0x1c
avrdude-64: stk500_getsync() attempt 5 of 10: not in sync: resp=0xfc
avrdude-64: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe0
avrdude-64: stk500_getsync() attempt 7 of 10: not in sync: resp=0xfc
avrdude-64: stk500_getsync() attempt 8 of 10: not in sync: resp=0xfc
avrdude-64: stk500_getsync() attempt 9 of 10: not in sync: resp=0xfc
avrdude-64: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude-64 done.  Thank you.

2020-10-03 18:49:53,262 [main] ERROR d.f.i.r.c.w.a.ArduinoCommunicator uploadFile - Program was unable to be uploaded: 1,
2020-10-03 18:49:53,263 [main] INFO  d.f.i.roberta.ui.main.MainController setState - Setting state to ERROR_UPLOAD_TO_ROBOT

with absolutly no hint in the GUI Message box about what went wrong. i searched a bit and found that the connector seems to run into this problem: https://www.heise.de/make/artikel/Arduino-Nano-mit-neuem-Bootloader-4011641.html - i use a quite old Nano which has the old bootloader installed. Is there a way to switch to the old bootloader?
BTW: Why is that jar obfuscated (d.f.i.r.c.w.a.)?

wrt obfuscation: the jar isn't obfuscated. Our logger has 36 chars and abbreviates logger names (assuming, that the name is <package-name>.<class-name> automatically. For example:
de.fhg.iais.roberta.util.Util (short enough)
d.f.i.roberta.util.ServerProperties (part-part)
d.f.i.r.p.AbstractProcessor (fully abbr)

For the first problem: I think the errors can be safely ignored, the network is scanned for network based robots and sometimes something may go wrong.
Second error: I am not sure how to reproduce that, can you tell me the steps that trigger it?
And for the final problem: these kind of errors happen from time to time with older and non-genuine Arduinos, especially Nanos.
We want to keep everything as simple as possible for most users, so you cannot select the type of bootloader or modify any other options, as the defaults work most of the time.
There are so many specific problems that may happen in conjunction with Arduinos that we just have to assume everything is "normal".
Though, you should be able to update the bootloader through the Arduino IDE, there should be enough tutorials on the internet for that. Once that is done, and everything works with the Arduino IDE, the Connector and the Lab should work as well.

If the error can be ignored why is it logged on WARN level?
The error can be reproduced in the Device-Edit-Dialog (btw: i just discoverd another strange behaviour: if i open that dialog another dialog popps up after a while to suggest to connect a device. that dialog can't be closed or otherwise interacted with while the first dialog is open), if i add a device from the top list and press 'Save'. I finally found out that the type needs to be edited.
I dont like programs that do auto-magic-everything because that fails miserably most of the times. It isnt much helpful in a classroom scenario as well. It would be easier if it would be possible to pinpoint the program to a desired behaviour via a config file or program arguments.
Upgrading the bootloader isnt an option for our students if that isn't urgently needed. The change in the connection is so simple that Open Roberta could easily support it. It can even be detected (USB ID is 1a86:7523). It's just the baudrate of 57600.

It is logged by the library we use for network scanning, in case something is wrong with finding network robots we could use it to determine the problem. For your usecase it can be ignored.
I was able to reproduce the second problem, I created #22 for that, thanks!
We decided on the automatic approach because that works for most of our users, without them having to change options they might not understand. I agree that allowing to specfiy extra options with (at least) a config file would be a nice addition, in case the automatic detection or transfer fails. However, that leads to capturing every specific workaround Arduinos might need, which is something we do not have the resources to support right now.
We are open to community contributions, though!

If one compiles the programs herself one can change a single line in de/fhg/iais/roberta/connection/wired/arduino/ArduinoCommunicator.java:94. Just add -b57600 to the options so that the line reads:
args.add("-patmega328p", "-carduino", "-b57600");

it will support the old bootloader this way. I "invented" a new type but that was rejected because the server doesnt know about it ;) (the arduino IDE does the same).
I as well implemented a single 60-liner to pinpoint to a certain robot/device. it isnt that complicated (for now bound to an arduino):
https://gist.github.com/emdete/2ee81f637c9a2108ef5f2adf65b51b8a
Maybe someone can take a look and tell if it's correct.


NETOBSERV-1585: fix issues exposing metrics upstream/downstream

Fix using TLS with user workload monitoring
Do not set openshift-monitoring annotation on netobserv namespace upstream
Fix tagging DOWNSTREAM DEPLOYMENT on netobserv-privileged namespace

Description

Dependencies

n/a
Checklist
If you are not familiar with our processes or don't know what to answer in the list below, let us know in a comment: the maintainers will take care of that.

[x] Is this PR backed with a JIRA ticket? If so, make sure it is written as a title prefix (in general, PRs affecting the NetObserv/Network Observability product should be backed with a JIRA ticket - especially if they bring user facing changes).
[ ] Does this PR require product documentation?

[ ] If so, make sure the JIRA epic is labelled with "documentation" and provides a description relevant for doc writers, such as use cases or scenarios. Any required step to activate or configure the feature should be documented there, such as new CRD knobs.

[ ] Does this PR require a product release notes entry?

[ ] If so, fill in "Release Note Text" in the JIRA.

[ ] Is there anything else the QE team should know before testing? E.g: configuration changes, environment setup, etc.

[ ] If so, make sure it is described in the JIRA ticket.

QE requirements (check 1 from the list):

[x] Standard QE validation, with pre-merge tests unless stated otherwise.
[ ] Regression tests only (e.g. refactoring with no user-facing change).
[ ] No QE (e.g. trivial change with high reviewer's confidence, or per agreement with the QE team).

/label qe-approved

@jotak - do we need this PR ? since the commit here was already included in PR #602 and it's merged.

indeed we don't need it anymore, thanks @memodi


Fix decompile for tutorial snippets with variables

@pelikhan no, we send new compile options on ever compile request


Correct a bug in ncprocess for u,v metadata check

Fixed the elif statement that checks if there is a fill value for u and v in the metadata to prevent a key error if u and v aren't listed as variables in the metadata at all.

Feel free to self merge when tests done


[BugFix] BinlogConfig buildFromProperties fix

What type of PR is this：

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Which issues of this PR fixes ：

fix the incorrect logic of BinlogConfig.java
Problem Summary(Required) ：

change it
Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[ ] I have checked the version labels which the pr will be auto backported to target branch

[ ] 2.5
[ ] 2.4
[ ] 2.3
[ ] 2.2

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.zhang.xian seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

[FE PR Coverage Check]
:disappointed: fail : 0 / 1 (00.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/binlog/BinlogConfig.java
0
1
00.00%
[68]

[FE PR Coverage Check]
😞 fail : 0 / 1 (00.00%)
file detail
path	covered_line	new_line	coverage	not_covered_line_detail
🔵	com/starrocks/binlog/BinlogConfig.java	0	1	00.00%	[68]

already add BinlogConfigTest

[FE PR Coverage Check]
:heart_eyes: pass : 1 / 1 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/binlog/BinlogConfig.java
1
1
100.00%
[]

@beanflower-bs thanks for your contribution, could you sign the CLA?

[FE PR Coverage Check]
:heart_eyes: pass : 1 / 1 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/binlog/BinlogConfig.java
1
1
100.00%
[]

@imay I already sign the CLA!

[FE PR Coverage Check]
:heart_eyes: pass : 1 / 1 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/binlog/BinlogConfig.java
1
1
100.00%
[]

@beanflower-bs Thank you and congratulate to be the 200th contributor.


Profile Feature

User Profiles
Profiles for individual users with multiple accounts will make getting starting faster.
Requirements

[ ] Create Profile
[ ] Add Account to Profile
[ ] Remove Account from Profile
[ ] Save Profile
[ ] Load Profile
Profile view

Canceled.


Add new post and myself as contributor

Description of changes:
Added myself as a contributor and added one blog post
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Sure, I changed it. Thanks! :)

@aspittel quick ping 🙂

re: comment on Twitter. This project/repo is transitioning to a new project. I'm going to close this for now.


Serverless Offline path does not work with function level package pattern

I am trying to run the following in a function in Serverless Offline
  const buffer = await readFile(
    __dirname + '/user-data.sh'
  );

but I will receive a file not found error.
package:
  individually: true

functions:
  start-server:
    package:
      patterns:
        - src/functions/start-server/luser-data.sh

But the file will be not found because it looks like serverless-esbuild will output the file to __only-serverless-dev-start-server/functions/start-server/user-data.sh folder instead of src/functions/start-server/user-data.sh
It looks like the package version works fine because it copies it over but it does not work with serverless-offline.
My work around is setting the top level package to include the file instead.

I can see the same problem here, using
    "serverless": "^2.66.0",
    "serverless-offline": "^8.2.0",

pattern inside a function is ignored, at the root level it works just fine

Problem is the name does not match the local path. Local path does not have the stage name in the middle.
I will open a PR with a fix shortly.