pgsync.exc.ReplicationSlotError with version 2.5.0

PGSync version: 2.5.0 / 2.5.1 (main branch)
Postgres version: postgres:12.4
Elasticsearch version: elasticsearch:7.12.1
Redis version: image: redis:6.0.6
Python version: 3.8
Problem Description:
pgsync.exc.ReplicationSlotError:
Permission issue after upgrading pgysnc to 2.5.0, with pgsync 2.1.1 same setup is working fine.
Error Message (if any):
2023-03-24 09:42:17.464:ERROR:pgsync.base: Exception (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
2023-03-24 09:42:17.468:ERROR:pgsync.base: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 178, in _can_create_replication_slot
    self.create_replication_slot(slot_name)
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 377, in create_replication_slot
    return self.fetchone(
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 178, in _can_create_replication_slot
    self.create_replication_slot(slot_name)
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 377, in create_replication_slot
    return self.fetchone(
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/bootstrap", line 69, in <module>
    main()
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/bin/bootstrap", line 58, in main
    sync: Sync = Sync(
  File "/usr/local/lib/python3.8/site-packages/pgsync/singleton.py", line 17, in __call__
    cls._instances[key] = super(Singleton, cls).__call__(
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 99, in __init__
    self.validate(repl_slots=repl_slots)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 135, in validate
    self._can_create_replication_slot("_tmp_")
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 181, in _can_create_replication_slot
    raise ReplicationSlotError(
pgsync.exc.ReplicationSlotError: 'PG_USER "postgres" needs to be superuser or have permission to read, create and destroy replication slots to perform this action.'
2023-03-24 09:42:24.113:ERROR:pgsync.base: Exception (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
2023-03-24 09:42:24.115:ERROR:pgsync.base: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 178, in _can_create_replication_slot
    self.create_replication_slot(slot_name)
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 377, in create_replication_slot
    return self.fetchone(
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
 0:00:05.914382 (5.91 sec)
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
psycopg2.errors.ConfigurationLimitExceeded: all replication slots are in use
HINT:  Free one or increase max_replication_slots.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 178, in _can_create_replication_slot
    self.create_replication_slot(slot_name)
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 377, in create_replication_slot
    return self.fetchone(
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 806, in fetchone
    row = conn.execute(statement).fetchone()
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1380, in execute
    return meth(self, multiparams, params, _EMPTY_EXECUTION_OPTS)
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection
    return connection._execute_clauseelement(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1572, in _execute_clauseelement
    ret = self._execute_context(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1943, in _execute_context
    self._handle_dbapi_exception(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 2124, in _handle_dbapi_exception
    util.raise_(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/util/compat.py", line 211, in raise_
    raise exception
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/base.py", line 1900, in _execute_context
    self.dialect.do_execute(
  File "/usr/local/lib/python3.8/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (psycopg2.errors.ConfigurationLimitExceeded) all replication slots are in use
HINT:  Free one or increase max_replication_slots.

[SQL: SELECT *
FROM PG_CREATE_LOGICAL_REPLICATION_SLOT(%(PG_CREATE_LOGICAL_REPLICATION_SLOT_1)s, %(PG_CREATE_LOGICAL_REPLICATION_SLOT_2)s)]
[parameters: {'PG_CREATE_LOGICAL_REPLICATION_SLOT_1': '_tmp_', 'PG_CREATE_LOGICAL_REPLICATION_SLOT_2': 'test_decoding'}]
(Background on this error at: https://sqlalche.me/e/14/e3q8)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/bin/pgsync", line 7, in <module>
    sync.main()
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/local/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 1450, in main
    sync: Sync = Sync(document, verbose=verbose, **kwargs)
  File "/usr/local/lib/python3.8/site-packages/pgsync/singleton.py", line 17, in __call__
    cls._instances[key] = super(Singleton, cls).__call__(
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 99, in __init__
    self.validate(repl_slots=repl_slots)
  File "/usr/local/lib/python3.8/site-packages/pgsync/sync.py", line 135, in validate
    self._can_create_replication_slot("_tmp_")
  File "/usr/local/lib/python3.8/site-packages/pgsync/base.py", line 181, in _can_create_replication_slot
    raise ReplicationSlotError(
pgsync.exc.ReplicationSlotError: 'PG_USER "postgres" needs to be superuser or have permission to read, create and destroy replication slots to perform this action.'

I have confirmed that my user has superuser permission along with Replication

@toluaina

I resolved the issue with following steps (dev environment)

Get existing replication slots

SELECT * from PG_REPLICATION_SLOTS;

Delete them

select pg_drop_replication_slot('my_pgsyncproducts_slot_name');

Set max_replication_slots

ALTER SYSTEM SET max_replication_slots = 1;

Bootstrap again

bootstrap --config schema.json


add configs for SendingMe and SendingNetwork

ENS name can be automatically set as user's display name.

Thanks for the PR. The screenshot seems sending.me. How does sending.network integrates with ENS?

Hey Makoto, SendingMe is built upon the SendingNetowrk protocol and utilizes its ENS resolution capability.


Adding test case for dbm=false default

What does this PR do?
Adding the test case that checks the correct dbm default value (false).
Motivation
dbm is a critical default because setting it to true by mistake would cause massive wrong charging.
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


fix metadata refresh code & test. Increase model tests

@Amertz08 this fixes the todo in the refresh_metadata method. I've added some more testcases to that particular testing scenario, and I've also added some more (though simple) tests for the model properties in order to increase the coverage.


Exalted 2e - Advantages Error Bugfix 2

Corrected error introduced in last patch, which isolated Advantages to Mortals only. Advantages should now appear for all Exalt Types as normal.

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details

The name of this game is: <   >  (i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)

The publisher of this game is: <   > (i.e. Wizards of the Coast, Evil Hat)

The name of this game system/family is: <   > (i.e. Dungeons & Dragons, FATE)

[ ] I have followed the Character Sheets Standards when building this sheet.

[ ] This sheet has been made on behalf of, or by, the game's publisher.
[ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: <   >
[ ] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

Changes / Description

Added a missing div end tag to prevent Mortals from having all the Advantages.

Character Sheet Info Roll20 Internal Use only.


[FP]: CVE-2022-22976 in spring-boot-starter-security-2.6.8.jar

Package URl
<EMAIL_ADDRESS>CPE
cpe:2.3:a:vmware:spring_boot:2.6.8:::::::*
CVE
CVE-2022-22976
ODC Integration
No response
ODC Version
7.1.0
Description
Spring Security versions 5.5.x prior to 5.5.7, 5.6.x prior to 5.6.4, and earlier unsupported versions contain an integer overflow vulnerability. When using the BCrypt class with the maximum work factor (31), the encoder does not perform any salt rounds, due to an integer overflow error. The default settings are not affected by this CVE.
I believe this is a false positive as Spring Boot 2.6.8 uses spring-security 5.6.5, which isn't vulnerable.

Duplicate of #4563


Extend timeout on integration tests, update unit tests to reflect copy changes

Thank you! Not to worry - thanks to this diff, I feel way better acquainted with how the tests work. Really appreciate all of your assistance with debugging and getting things ship shape locally @alflennik


Sortable drags the carousel (shovel only one picture) -> becomes dragging multiple pictures

Could you give a JSBin?

I'm pretty sure this is just a drag image issue, in which case this issue has been fixed


Install additional required components

Still got this message after install.
Using the post-install script from here to fix the issue:
https://jamfnation.jamfsoftware.com/discussion.html?id=17443

Interesting, xcode-install does most of it, but doesn't do this:
/usr/sbin/installer -pkg /Applications/Xcode.app/Contents/Resources/Packages/MobileDeviceDevelopment.pkg -target /

Has anyone else seen this issue?

Those of us mass-deploying Xcode did indeed see that whenever the 2nd pkg appeared (maybe it was Xcode 5?), and started installing both. I'd definitely recommend installing both, although it could probably be done in an idempotent way if you do the work to check the package versions, or do whatever Xcode's installation framework is checking to determine whether it needs installing.
It's one of those things that isn't revved frequently, so easy to miss that it's required unless you're routinely testing complete installs on fresh systems.

I made this more flexible now by iterating through all potential .pkgs in Contents/Resources/Packages and installing all of them.


Strange $Diff behaviour

Try flow example
type WithID = {
  id: number,
  title: string,
};

// Next, two options for making a version without an id.
// I think these are equivalent types, but Flow disagrees.
type WithoutIdViaDiff = $Diff<WithID, {id: number}>;
type WithoutIdViaOmission = {title: string};

// Assigning a WithoutIdViaOmission to a WithoutIdViaDiff works.
const x: WithoutIdViaDiff = ({title: ''}: WithoutIdViaOmission);

// But assigning a WithoutIdViaDiff to a WithoutIdViaOmission does not...
const y: WithoutIdViaOmission = ({title: ''}: WithoutIdViaDiff);

Interestingly, the error says
15: const y: WithoutIdViaOmission = ({title: ''}: WithoutIdViaDiff);
                                     ^ WithID.  Strange.

maybe it's a bug? even the example in the docs is failing:
type Props = { name: string, age: number };
type DefaultProps = { age: number };
type RequiredProps = $Diff<Props, DefaultProps>;

function setProps(props: RequiredProps) {
  props.name;
}

6:   props.name;
           ^ property `name`. Property cannot be accessed on
6:   props.name;
     ^ Props

It's a known limitation of $Diff right now. It can only be used as a requirement and not for usage. There is some work being done to improve the situation. Sadly, it's not an easy problem.


Python prototype of cache-oblivious FFT

Python implementation of the cache-oblivious FFT algorithm. Can be ported to Rust by whoever needs a project.

Not asking for review before merging, because this is throwaway code and totally separate from the rest of the codebase.


Implement USER setting owner of COPY'd files.

The patchset actually implements the proposal docker#7537. It
adds the functionality for the COPY instruction to chown the
files it copies into the container to the current USER set in the
Dockerfile. It also adds tests to ensure that this UX change does
not regress in later revisions.
Closes #7537
Signed-off-by: Aleksa Sarai<EMAIL_ADDRESS>(github: cyphar)

Updated the patches to some libcontainer changes, rebased and added the new documentation. However, I'm not going to track this PR and consistently add new doc changes ad infinitum. I am not going wait out the next few centuries for a code review that isn't going to happen.
@shykes @crosbymichael If you have an issue with this PR or proposal that hasn't been raised and responded to, please put it forward. If you have no issues with it, please LGTM and merge it. If you don't like it on a fundamental level, please say so and close it.

@cyphar I already approved the design. Up to @crosbymichael and the other maintainers to merge to close the implementation.

@cyphar update, the discussion has been re-opened since my initial approval of the design was based on the fact that COPY was fairly recent and not heavily used, which could justify making an exception to reverse compatibility. However, since unfortunately the implementation review has been in the backlog for over 50 days... We are discussing whether that exception is still justified.
If you're interested the discussion is taking place on #docker-maintainers in Freenode (it's open for everyone to listen in).

@shykes I'm not entirely sure that I agree with your strong view on what "backward compatibility" entails (nor the lengths to which it seems to be pushed on developers). First of all, this change is only a breaking change for essentially one use case -- COPYing a file with a USER set and not intending to chown it later. This is not what I would call a "common" use case, and I don't understand why we should pander to something which (AFAIK) is not commonly used (nor recommended anywhere).
However, even if this was a common use case, Docker is a versioned piece of software! Docker binaries have versions and you state changes between versions in a change log. Why not just say "The COPY directive in Dockerfiles has been updated to provide a more clean and intuitive user experience. As of this version, COPY will change the owner of any files copied to the currently set USER. We recommend that you test (and make the required changes to) your Dockerfiles before upgrading to this version."? That way, people are informed that there has been a change to the UX and that they should upgrade to the new version (with the old UX being a subset of features of the new UX).
The problem with having such a strong aversion to potential backward compatibility issues is that you end up with what I dub "the PHP problem" (see: the mysql_escape_string and mysql_real_escape_string fiasco). Strong backward compatibility requirements for features that were not correctly designed results in things like REALCOPY and COPYFORREALTHISTIMEWEPROMISE. It's just not sustainable to require that all features (particularly ones that were written with little to no actual planning) must be backward compatible until the end of time or (more worryingly) that you need to add syntax that supersedes the old syntax but is also backward compatible with it.
As for the delay between the proposal acceptance and the merging of the required patches, my patchsets were ready within a week of the proposal being accepted. The reason for the delay was delay by the libcontainer maintainers in merging the libcontainer patches. I'm not blaming them or you, I understand that the libcontainer patches were quite large and touched a lot of things.
The point I'm trying to make is that such strong backward compatibility requirements for features that were essentially written on a dare does not make sense and it stops features which people have clearly stated they are in favour of (and in some cases state they need in order to effectively use Docker).

I would also add that I'm totally +1 on this very small surface breaking change, and my reasoning is simple.  Today, doing USER and then COPY will almost never do what you expect.  Since the files are owned by root:root and have whatever permissions applied to them that were applied in the source, it's also very possible and likely that the given USER can't even read them or use them in a meaningful way.  I think this is one of the biggest reasons for the COPY+RUN chown -R ... pattern, which leads to potential AUFS issues.
This fix still seems like a very clean solution to the problem IMO, without introducing any new syntax or even any new ideas (since instructions like WORKDIR and USER are already defined as having an effect on subsequent commands).

Although I applaud the effort to preserve BC, I agree with @cyphar and @tianon here; I think this is more a bugfix than a new feature. Given the number of issues I've seen coming by, I think others see it that way as well.
Two points;

We recommend that you test (and make the required changes to) your Dockerfiles before upgrading to this version."?

You touch a problematic case here; environments where the user has no control over the version being used. Most prominent being automated builds on the registry; afaik there's no way for users to tell what version of docker is used on the registry and (since Dockerfiles are not versioned), there's no way to control behavior there.
Process
I'm not really sure what the follow up to the decision on #docker-maintainers will be, but if the decision on IRC is final, does that match the guidelines (and https://github.com/docker/docker/pull/9137) (PR -> discuss -> approve/reject)? To be clear; I understand some discussions need some speed-up, but a new syntax In the Dockerfile without a PR first seems odd. Will an alternative PR to this, with the proposed design changes, be created?

@thaJeztah You could write it as "Please be wary of this when you upgrade to the new Docker version". Again, the potential use cases where this would break their images are far from common (and I would claim are bordering on unsafe anyway).
Just for the purpose of demonstration, this is the one use case where this patchset "breaks" backward compatibility:
USER 1337
COPY somefile .
# NOTE: at this point, the runconfig user probably can't use the file just added anyway
USER root
# Use the file just copied.

I don't know about anyone else here, but the above Dockerfile looks badly written and I don't see why we should pander to this use case which (AFAIK) isn't actually done anywhere ... reputable.

@cyphar I'm with you there! And thanks for adding the example. I mentioned the registry scenario because it is something to consider when making a decision. In this case, I think the scenario is indeed very rare. (Perhaps add an example to the docs for those who need the old behavior?)

Having some way to configure the behavior of instructions can offer some nice new possibilities. I'm not very fond on the proposed notation, as it really looks odd compared to the existing instructions.
Having to add a USER xx, IMO, isn't really less clean than putting the same thing in front of an instruction. And having a (possibly growing list of) configurations before each instructions makes the Dockerfile really hard to read.
If white-space is going to be allowed in configuration-values, we might even end up with;
user=COPY \
group=COPY-EDITORS \
mode=755 COPY /foo /bar

I think adding the configuration syntax without deprecating USER will confuse people, because there are now two possible ways to change user, three if shell commands are taken into account. To use your original example, and add a COPY and ADD to that;
user=foo COPY /some/file /to/here
ADD http://www.example.com/archive.tar.gz /app/
USER root
RUN chown -r foo /app && chmod -r 755 /app
USER foo
RUN /app/something
USER root
RUN something-else-which-needs-root-and-must-run-after-something
USER foo
RUN the-final-thing-to-run

So there's not going to be an explicit proposal for this new syntax?  I have to be honest, I really, really hate the way it flows, and find that visually, it really disrupts the focus of the Dockerfile away from the actual instructions.

I will ensure there is a proposal before any commits start flying.
On Mon, 2015-01-05 at 13:23 -0800, Tianon Gravi wrote:

So there's not going to be an explicit proposal for this new syntax? I
have to be honest, I really, really hate the way it flows, and find
that visually, it really disrupts the focus of the Dockerfile away
from the actual instructions.
—
Reply to this email directly or view it on GitHub.

@tianon is right, this needs a proposal and this discussion does not
belong in this issue.
@thaJeztah since you seem to have a clear understanding of what needs to
happen, can you bootstrap a proposal that describes the existing
proposed interface and engineer it in a way that makes it amenable to
modification so we can discuss it? It would be insanely helpful and a
great way to contribute to the project.
If you do this, please follow the docs-PR proposal process. Thanks!
-Erik
On Mon, 2015-01-05 at 13:07 -0800, Sebastiaan van Stijn wrote:

Having some way to configure the behavior of instructions can offer
some nice new possibilities. I'm not very fond on the proposed
notation, as it really looks odd compared to the existing
instructions.
Having to add a USER xx, IMO, isn't really less clean than putting the
same thing in front of an instruction. And having a (possibly growing
list of) configurations before each instructions makes the Dockerfile
really hard to read.
If white-space is going to be allowed in configuration-values, we
might even end up with;
user=COPY
group=COPY-EDITORS
mode=755 COPY /foo /bar
I think adding the configuration syntax without deprecating USER will
confuse people, because there are now two possible ways to change
user, three if shell commands are taken into account. To use your
original example, and add a COPY and ADD to that;
user=foo COPY /some/file /to/here
ADD http://www.example.com/archive.tar.gz /app/
USER root
RUN chown -r foo /app && chmod -r 755 /app
USER foo
RUN /app/something
USER root
RUN something-else-which-needs-root-and-must-run-after-something
USER foo
RUN the-final-thing-to-run
—
Reply to this email directly or view it on GitHub.

@erikh so, basically a proposal based on the discussion on #docker-maintainers?
Yup, can probably do that tomorrow (it's now close to midnight here)

Cool, that'd be perfect! Thank you.
-Erik
On Mon, 2015-01-05 at 15:02 -0800, Sebastiaan van Stijn wrote:

@erikh so, basically a proposal based on the discussion on
#docker-maintainers?
Yup, can probably do that tomorrow (it's now close to midnight here)
—
Reply to this email directly or view it on GitHub.

I'm going to close this one as we don't want it merged, it will change the semantics of how COPY works and will causes issues for people.
@cyphar sorry about all of this.  We didn't know that your other PRs were time sensitive for when COPY was introduced in order to make this change.
We can continue the discussion on the new proposed changes elsewhere but I think it's safe to close this PR now.


[Bug/Antelope] openstack-dashboard workload version 23.2.0 has no compatible OpenStack release

Encounter on: zed -> antelope, step openstack-dashobard upgrade.
Error message:
cou.exceptions.ApplicationError: 'openstack-dashboard' with workload version 23.2.0 has no compatible OpenStack release.

The workload version for openstack-dashobard is 23.2 and not in the range antelope supported. Also the workload version on the official document is 23.1.0.
Need to confirm which workload version is correct.

I did some more digging, and I think the official pages to reference are:

https://releases.openstack.org/antelope/index.html#antelope-horizon : compatible releases of horizon for antelope are 23.1.0 and 23.1.1
https://releases.openstack.org/bobcat/index.html#bobcat-horizon : compatible releases of horizon for bobcat are 23.2.0 and 23.3.0

The openstack-dashboard charm however deploys:

channel 2023.1/stable (antelope), default config, jammy: horizon 23.2.0
channel 2023.1/stable (antelope), openstack-origin=cloud:jammy-antelope, jammy: horizon 23.2.0
channel 2023.2/stable (bobcat), default config, jammy: horizon 23.3.0
channel 2023.2/stable (bobcat), openstack-origin=cloud:jammy-bobcat, jammy: horizon 23.3.0

I've asked internally if this is expected.
If it's expected: we need to update COU's lookup table to include 23.2.0 in antelope,
If it's not expected: the charm and/or cloud archive ppa needs updating to install the correct version.

I've asked internally if this is expected.

Update: I was pointed to https://bugs.launchpad.net/cloud-archive/+bug/2030514 , where 23.2.0 was added to the antelope cloud archive ppa. Unsure if a decision was made to update to fix a bug, or if it was simply a mistake. But it may be there to stay.


[WIP] fix QuickStart build warnings

The parser now requires the .yml extension on the nextTutorialHref

I just merged this change with PR #5170

Of course you did @mairaw
I'll close this then.


header updates for Intel extensions

This pull request contains header updates for two recently posted Intel extensions:

cl_intel_planar_yuv
cl_intel_device_side_avc_motion_estimation

Would you like me to cherry-pick these changes over to the 2.0 and 1.2 branches as well?

If you could that would be helpful – thanks!
(Could you propagate to the 2.1 branch also?)
From: James Price<EMAIL_ADDRESS>Sent: Monday, February 13, 2017 2:29 PM
To: KhronosGroup/OpenCL-Headers<EMAIL_ADDRESS>Cc: Ashbaugh, Ben<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [KhronosGroup/OpenCL-Headers] header updates for Intel extensions (#15)
Would you like me to cherry-pick these changes over to the 2.0 and 1.2 branches as well?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/KhronosGroup/OpenCL-Headers/pull/15#issuecomment-279544200, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AOIDv6bIYNCzWHDIdDbxahI3etHD7ab3ks5rcNkigaJpZM4L_oyG.

Done.


SWR Meter

Just asking but I don't know if the circuit allows it: would it be possible to implement a SWR meter as in many transceivers?
My Yaesu FT-817 can switch between output power, signal strength and SWR.
This way we could test our antennas without an external SWR meter.

The chip doesn't provide SWR info.


Document GFA a record

Hi, Heng. If you think that the a record that you've used in the GFA output of miniasm would be useful to others, would you like to send a pull request documenting it to https://github.com/pmelsted/GFA-spec, or document it here and I'll add it to the GFA spec? Thanks, Shaun

That is just a temporary field for debugging. I am likely to change its format and then will consider to standardize it.

Okay. Thanks, Heng.


Additional options for each mvn execution

To be able to use the release action with a Maven project, which is not in the root directory, an additional input is required (e.g. -f path/to/pom.xml). Currently there is an input called "maven-release-options", but this input is not used in/not appropriate for line 58:
https://github.com/camunda-community-hub/community-action-maven-release/blob/main/action.yml#L58
Suggestion: Add following input
  maven-additional-options:
    description: Any extra Maven options
    required: false
    default: ""

and add the new input to all Maven executions:
mvn -B ${{ inputs.maven-additional-options }} ...

Moreover the option must be passed to resources/prepare-next-development-version.sh:
https://github.com/camunda-community-hub/community-action-maven-release/blob/main/resources/prepare-next-development-version.sh#L24
Background:
In bpmn-driven-testing the Maven project, which should be released, is located in the "maven-plugin" directory. Therefore the Maven option "-f maven-plugin/pom.xm" must be added. Otherwise the action fails with:
The goal you specified requires a project to execute but there is no POM in this directory (/home/runner/work/bpmn-driven-testing/bpmn-driven-testing). Please verify you invoked Maven from the correct directory.

I tried to use the "maven-release-options" input:
https://github.com/camunda-community-hub/bpmn-driven-testing/blob/master/.github/workflows/deploy.yml#L36
But it does not work, since the "maven-release-options" are understandably not used in line 58 of the action.

Hi @gclaussn--Thank you so much for opening this issue! I'll take a look and will get back to you ASAP! :)

Hi Rin,
I added a comment to each pull request, please have a look. I don't think the inlining will work, the new input just needs to be added under inputs (where the other inputs are already defined). The Maven executions must invoke the same goals as before (my "..." were just a placeholder), because the release action should work like before. Only the additional options should be included.
If you want, I can do the change and create a pull request!?

Thank you so much for your thoughtful and helpful comments @gclaussn! I made two more PRs this morning, #12 and and update to #11. I hope these get this issue a bit closer to the finish line!

Hi Rin,
thank you for your efforts, I think there is still something missing in the action and in the prepare-next-development-version.sh you removed the mvn update versions.
I created a pull request with all desired changes:
https://github.com/camunda-community-hub/community-action-maven-release/pull/13/files
I hope this ok for you - don't wanted to create trouble or confusion!

Hi @gclaussn! Thank you so much, this looks great. :) We'll take a look and hopefully get #13 merged in soon!

Hi @gclaussn! I just merged #13, which I hope should better enable you to make use of the automated release process in the Community Hub! I will update the README accordingly to detail the changes made here!

Hi @celanthe, the additional Maven options seem to work :-)
But there is another problem, which I have not seen before:
https://github.com/camunda-community-hub/community-action-maven-release/blob/main/action.yml#L68
The SNAPSHOT release fails with:
sed: can't read target/nexus-staging/deferred/.index: No such file or directory

I tested locally how to fix this statement using "find", so that it works in both cases (target directory under root and target directory anywhere else):
$ find . -path '**target/nexus-staging/deferred/.index'
./target/nexus-staging/deferred/.index
maven-plugin/target/nexus-staging/deferred/.index

Please see pull request https://github.com/camunda-community-hub/community-action-maven-release/pull/14!

@celanthe, now the SNAPSHOT build/release is working when merging into master.
I will try perform a release, following the release process documentation.
But this issue is resolved and will be closed.
Thank you for your support!


Fix hanging tests for streaming controllers using Devise

Fixes #5285.

Whoops! In Rails 6 (and 5), #2332 doesn't impact controller tests, but apparently in Rails 4 it does. Should be fixed now.

:+1: thanks!

Any idea when this will be released (to rubygems, that is?)?

I don't have an ETA, but it looks like I'll have to cut something soon ;)
I had someone asking: https://github.com/heartcombo/devise/issues/5252#issuecomment-691989588, but I have to check on a couple other things first in regards to what's in master. Hopefully 🔜

@afn v4.7.3 is out including this change, thanks!


solnlib.packages.splunklib.binding.HTTPError: HTTP 404 Not Found -- {"messages":[{"type":"ERROR","text":"Action forbidden."}]}

I'm getting the following error in _internal.
message from "/opt/splunk/bin/python3.7 /opt/splunk/etc/apps/git_for_splunk-master/bin/gitforsplunk.py" solnlib.packages.splunklib.binding.HTTPError: HTTP 404 Not Found -- {"messages":[{"type":"ERROR","text":"Action forbidden."}]}
Any ideas?

OK, this repo isn't being updated. I noticed you've updated the app a few days ago, but this report shows no activity for 4 years. I downloaded from Splunk and used that one; it works fine.

Hi markthomsen-gsa, Thanks for reporting the issue, I had forgotten to update the repo, but I have just done so now.


[Blade] Child view that inherits from parent always has the same value

Laravel Version: 5.7.1
PHP Version: 7.1.3
Database Driver & Version: 5.7 mySQL

Description:
Basically what the title says. It's better explained by showing an example, but I don't see how this behavior makes sense.
Steps To Reproduce:
list.blade
@include('test.child', ['value' => 100])
@include('test.child', ['value' => 200])
@include('test.child', ['value' => 300])

parent.blade
@yield('content')

child.blade
@extends('test.parent')

@section('content')

Child Value: {{ $value }}

@endsection

What I'm expecting to get:

Child Value: 100
Child Value: 200
Child Value: 300

what I'm actually getting:

Child Value: 100
Child Value: 100
Child Value: 100

The first $value just seems to be "cached" everytime a new instance of a child view gets rendered.

This code doesnt make sense. It should just be:
@include('test.child', ['value' => 100])
@include('test.child', ['value' => 200])
@include('test.child', ['value' => 300])

and then child.blade is only

Child Value: {{ $value }}

Or - you should be doing @incude('test.parent') and not the child.

Yeah there's a logic issue here with how you're including and inheriting views/templates.
Although this would be best handled on one of the support forums, if you'll spin up and small reproducible repo, you can probably get some help.

Hi there,
Welcome to Laravel and we are glad to have you as part of the community.
Unfortunately this GitHub area is not a support area for general application issues. This is only for issues/bugs with the framework code itself.
I will be closing your ticket here. Instead please try asking your question on one of the many great community support areas that will likely give you a better answer more quickly:

Laravel Slack (https://larachat.co/)
Laravel.io Forum (https://laravel.io/forum)
Laracasts Forum (https://laracasts.com/discuss)
StackOverflow (http://stackoverflow.com/questions/tagged/laravel)

If you feel I've closed this issue in error, please provide more information about how this is a framework issue, and I'll reopen the ticket.
Thanks in advance.


[DI] Convert JSON to AnalyzeResult

I use Document Intelligence Service to get content of pdf files and convert it (AnalyzeResult) to JSON by using the following code:
result: AnalyzeResult = poller.result() result_dict = result.as_dict() with open(json_path, "w") as output_file:     json.dump(result_dict, output_file, ensure_ascii=False, indent=3)
Now I want to load result_dict from json_path and convert it to AnalyzeResult. How should I do it?

Hi @ngocntp , you can use from_dict in AnalyzeResult to do that
https://learn.microsoft.com/en-us/python/api/azure-ai-formrecognizer/azure.ai.formrecognizer.analyzeresult?view=azure-python#azure-ai-formrecognizer-analyzeresult-from-dict

with open("some path", "r") as input:
    result_dict = json.load(input_file)

result = AnalyzeResult.from_dict(result_dict)


Update to Stencil 0.7

Closes #217
I noticed you're using a beta version of CocoaPods that I'm not, please feel free to pull down my PR and run pod install on a different version if you'd rather that didn't change.

This should be good to go now, looks like Travis CI has a large backlog.

@kylef I'll also do a pod install like you suggested, to minimise the diff (after your rebase).

I've updated this PR with the following:

Rebased onto current master.
Switched to same version of CocoaPods as master.
Added changelog item.
Updated SwiftGen template documentation to refer to new Stencil documentation website.

Nice @kylef. Commenting so I get an email when it's merged.


Fix Vertical allignment in Rewards and Perks

Description
The Right side of the Rewards and Perks section is aligned vertically.
Screenshots

Additional information
No response

Working on it.


Executable failed to start when executed as a systemd service

I wanted to have this highly useful utility available as a daemon, but I'm running into trouble. The executable runs beautifully when run from the command line, but fails to launch when run as a systemd service. I was unable to build the project from the source code (due to local linker issues), so the copy I have is simply the pre-built executable.
Error log
This error log is the one generated by running journalctl -xeu three-finger-drag.service:
libinput-three-finger-drag[10748]: Error: Can't open display: (null)
libinput-three-finger-drag[10748]: thread 'main' panicked at 'can not initialize libxdo: Ffi', src/main.rs:19:15
libinput-three-finger-drag[10748]: note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
systemd[1]: three-finger-drag.service: Main process exited, code=exited, status=101/n/a
systemd[1]: three-finger-drag.service: Failed with result 'exit-code'.
systemd[1]: Failed to start three-finger-drag.service - Three Finger Drag daemon.

My service file
[Unit]
Description=Three Finger Drag daemon
After=network.target

[Service]
ExecStart=/usr/bin/libinput-three-finger-drag  # this fails whether it's /usr/bin/ or just /bin/; I have it in both dirs
Type=notify
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

##Setup:

Kubuntu 24.04.1 LTS (Noble Numbat) (using KDE, obviously)
x86_64 architecture
rustc 1.80.1
rustup home: /home/$USER/.rustup

From what I was able to find online, the first error implies a lack of access to the the windows it needs. Should I be executing the command from in a different working directory, or after a different target?
I am new to Linux, so maybe this is a simple fix; if so, I apologize for wasting your time.
Thanks!

Update: after installing the libxdo-dev library, I was able to build the utility from the source.
The problem, however, persists, with identical errors.

libinput-three-finger-drag[10748]: Error: Can't open display: (null)
Maybe because it starts too early, even before X. Can you try KDE auto start?

Ah, that might explain it. I'm new to Linux (and KDE), so could you help me understand a bit more about KDE's autostart, and how it might be implemented in the context (or at least a place to start)?

Okay, I think I got it. I did add the executable to KDE's autostart, and it's no longer raising any errors. That must've been it! I'm also running it as a user-level daemon (not root-level), so that may have helped as well.
For people figuring this out for the first time like me, here's what I did:

Get the program on your machine, either by downloading the pre-compiled binary or building from the source (if building from the source, make sure libxdo-dev is installed before building).
Test it on the command line.
If it works, we can define a user-level system daemon with it. Start by making a directory in your home directory called ~/.config/systemd/user, if one doesn't already exist.
Make a file there called three-finger-drag.service (or whatever you please), and paste the following text into it (substituting the path to the executable for /your/path/to/three-finger-drag-executable, of course), then save:

[Unit]
Description=Three Finger Drag daemon
DefaultDependencies=no
Before=shutdown.target

[Service]
ExecStart=/your/path/to/three-finger-drag-executable
Type=simple
Restart=on-failure
RestartSec=1

[Install]
WantedBy=shutdown.target

Go into your System Settings application (GUI), then Startup & Shutdown > Autostart, and add your executable to the list of applications (you'll probably have to add it by its path).
Run the following in the terminal:

systemctl --user enable three-finger-drag.service
systemctl --user start three-finger-drag.service

You should be able to use three-finger dragging on your trackpad now!

This is probably only one solution to this problem; I'm not sure everything in the three-finger-drag.service file is necessary for it to run properly, but I can say that Type=simple is essential: this allows the OS to consider the service started as soon as the process forks. Some other options for this line  (like exec) require main() to exit before considering the service started. Since this executable runs continuously, an option like that would not be ideal.
Thanks for the great program, and your help!

I have since learned that the systemd service file is redundant for the executable to run in the background; you only need to add it to the KDE Autostart list.


One-line code api for model

Hi, thanks for sharing the amazing work!
I am wondering could we have an one-line-command build or a simple api of the model?
Really appreciate that.

Got this. Thank you very much for replying!


App always in foreground

What is the expected behavior of the proposed feature?  What is the scenario this would be used?
It is very handy for Multitasking. Whenever you want to copy some text from an app (e.g. text editor) to another app. You don't have to use ALT+TAB all the time.
👍

Duplicate of https://github.com/microsoft/PowerToys/issues/13


fix(wpa-pkgs): vigem.vigembus - package version

WinGet PR: https://github.com/microsoft/winget-pkgs/pull/65549/files

/approve-and-merge


Release 2.4.0

#62 Default fields added by serilog to splunk
#63 Possible thread leak when ILogger instances are disposed

PR build issue due to missing Skip CI


When is milestone #2?

ANWSER ME!!

16/11/2016 11:30-11:45 😎

Thanks Wai for reminding. 😲

noted. Thank you 😄

Great! I'll be there. See you ;-D


Analysis of external mesh loading libraries and comparison with the existing approach

Desired behavior

Be able to load glTF2 and FBX mesh files into Gazebo.
Alternatives considered

Only alternative is on the user side, which creates additional step for converting mesh files into Ignition Gazebo readable format.
Implementation suggestion

There are two ways to extend the capabilities of the Gazebo's mesh loading system; (A) Using an external open-source library or (B) Writing glTF2 and FBX mesh loaders in a consistent way with the current approach.
Analysis is required to decide which approach is better. I am planning to generate such analysis in the next couple of days, so any idea is welcome. Currently gathering ideas around the internet to make a suitable comparision.
I created an additional document for this analysis in here. I will start my analysis with assimp.
Additional context

Currently working on a creating a connection between the assimp library and Ignition Gazebo.
Possible related issues #173,

Thank you for the ticket and for looking into it, @onurtore . It would be great to add this capability to Gazebo. Looking forward to seeing the results of your analysis.

small update: Very basic transformation algorithm written (Just considers, vertices,indices and normals like the STLLoader.), now going to integrate Assimp to Gazebo to create speed and size metrics. If possible I will write this as plugin.

Hi! I thought it would be interesting to try out assimp and am in the process of writing an assimp loader class following the collada / obj / stl loader classes to load assets through assimp.
My hope is to be able to both parse all the asset formats supported by assimp (including but not limited to fbx and gltf) and reduce the size of the gz-common codebase by removing all the custom loaders.
It's been going reasonably smoothly so far, keeping a checklist of tasks and things remaining below:

[ x ] Meshes (vertices, normals, faces)
[ x ] Materials - external textures
[ ] Materials - embedded textures (i.e. GLB)
[ ] Skeletons
[ ] Animations

For now I'll be focusing on parsing obj, dae and glb since those are the formats I personally use the most, I'll also try to unify all the unit tests in the collada / stl / obj loader into a single unit test file for assimp to try keep coverage high.
Work is currently taking place in the luca/assimp_sandbox branch.

Hi @luca-della-vedova,
I was planning to do this as a part of GSoC 22, but if OSRF decided otherwise, then I will try as much as I can to help your work even tough it might not be comparable.

I ran into a critical issue with the assimp library included in Ubuntu 20.04 (v5.0.1) that is unable to parse DAE assets with empty tags (i.e. empty author tag) which sadly makes up a majority of the assets in Fuel.
For this reason I'll be porting the code to work with the assimp version in Ubuntu 22.04, which seems to involve quite a few big changes @onurtore, you might want to build assimp from source in version 5.2.2 for work going further.

@luca-della-vedova
Can you share some mesh files that creates problems? Can you mention some of the big changes ?  So your setup includes 5.2.2 and Ubuntu 22.04, I didnt quite catch the reason to change the OS can you explain it?
Thanks.

@luca-della-vedova
Can you share the models with seg-faults?

The main change I had to deal with is that assets with empty author tags, there is a lot of them in the Ignition Edifice world, for example if you try to run:
ign gazebo -v3 "https://fuel.gazebosim.org/1.0/OpenRobotics/worlds/Edifice demo"

With a 20.04 binary it will fail and crash since the empty tag XML, for example in the Crates.dae file, will make assimp fail to import the asset. If you build assimp from source on latest master it's better.
A world that fails for me now is the actor.sdf world, so if you run:
ign gazebo actor.sdf

You should see a segmentation fault, still looking into it.

@luca-della-vedova,
It first did that, but error log said there is a assertion problem where the parameter of the argument of the loadDynamicImage function should be 6u.
So I look at the source code, it was 1u and changed to 6u and it worked. I cant create the relationship between empty XML tag. Can you help me little bit more ?

@luca-della-vedova, Below works on my machine:
ign gazebo -v3 "https://fuel.gazebosim.org/1.0/OpenRobotics/worlds/Edifice demo"

Strange, but now I don't have a clean machine to test with binary 5.0.1 anymore! :sweat_smile:

actor.sdf doesnt work, but it is too complex to handle the whole world, so I started with a simpler version: MecanumLift.dae. I will work on that as next step.

Yea it's a bit tricky because one actor with one animation works, seems to be an issue with either multiple animations or one of the ones I didn't manage to test yet.

mecanum lift.zip
Update: Looks like our skeleton loading code has problems. This will be a good oppurtunity to implement basic fallback system to default loaders as mentioned here.

Yea I saw the biggest issue right now is something about duplicated bone names, I'm sure it can be fixed at the AssimpLoader level.
Update from my side, I'm currently looking at PBR materials and embedded textures. PBR materials are reasonably simple to implement but a lot of interesting formats (i.e. fbx, glb) create a single binary blob with the mesh and all its related textures. gz-common does not currently support setting data structures (i.e. an array of bytes) as textures but only filenames so the change might be a bit more involved and span multiple packages.

@luca-della-vedova , do you have a mesh file that old collada loader utilizes the mesh structure ? Mecanum lift.zip doesn't and I am having hard time to fix without example.

Good news! There is pretty much feature parity in the demo worlds between the assimp loader and our custom STL / OBJ / DAE loaders! Edifice demo where every asset is loaded through assimp below:

@onurtore I can't see any issue with the mecanum lift, you can try the latest changes with assimp built from source and see how that goes?
The main issue right now is only in actor.sdf that might require some work here and there, for example it seems gz-sim expects the first animation to actually only be the skin and I don't think the loader is doing that right now.
I'll start looking at more niche features but this might soon be reaching a "good enough for basic operations" stage, as long as we are conservative with the custom loader behavior (for now there has been no issue with STL and OBJ but collada still has a few rough edges) and find a way to add the dependency for binary assimp.
Some example of more niche features that are still TODO:

[ ] Transparency
[ ] Finishing GLB PBR (It uses metallic roughness maps but they are unsupported by Ogre2 right now)
[ ] Embedded textures, as above, it's a large effort so might not do it for now
[ ] Full feature parity with ColladaLoader aka "why does actor.sdf crash"

Hi @luca-della-vedova,
Building<EMAIL_ADDRESS>in Ubuntu 20.04 ends up with an error. Applying the author's fix does not resolve the issue.
In order to progress, I used the source installation of  5.1.1. I test some of the worlds, while MaceneumLift.dae works in empty world, it does not work when I try to add it to eddifice.
Meshes without normals still have problems, maybe this will help.(

Hi @luca-della-vedova, Building<EMAIL_ADDRESS>in Ubuntu 20.04 ends up with an error. Applying the author's fix does not resolve the issue.

For the error personally I just deleted the line with the issue and it seems to work

Sounds good! One of the issues I can see from the screenshot is that the actors are also upside down, I guess both the upside down issue and the weird arms are issues with the node transforms and might have the same (or a similar) solution?
In the meanwhile I'm getting to work with embedded textures so there might be some pretty consistent changes in the branch to allow reading binary textures

Small update: It looks like we cant parse all the inverse bind transform with the assimp. This also effects the transformation of the  loaded skeleton. I will try to find a way to load all of them.

Small update: Assimp can not parse all the inverse bind transform. This happens because skeleton creation uses nodes, but code sets the inverse bind transform using mesh' bones. If number of bones and the number of nodes are not 1-1 correspondence then this creates nodes without inverse transform. Assimp sometimes does not include bones to hierarchy and I am trying to fix that or find a way to remove nodes without bones or automatically find the transformation of nodes without bones.

Thanks for digging into this! I noticed that this was documented in assimp and a PR was merged literally yesterday to deal with the issue of nodes and bones not mapping in case a bone didn't have any vertex.
I wonder if this could be the issue we are facing? It seems to have only been implemented for FBX though so I'm not 100% sure how to test it, an option could be to export the animation into FBX, test it, build from source with that commit then test it again and see if it's fixed.
If that works the "right" path forward might be to look into how the PR fixes the issue for FBX and try to submit one for other Collada?

Hi @luca-della-vedova,
The problem we are facing is related to node-bone correspondence.  I tried different approaches to eliminate this problem.

Using Assimp's flags to preserve the bones without vertices.
Unfortunately, flags related to this operations does not work.

Using a generic skeleton refine function.
I tried to solve the problem in the Gazebo's side, rather than Assimp side. I spent most of time to write a function that will take any Gazebo's  skeleton structure and Assimp scene and either add necessary transformations or remove bones without vertices. Unfortunately, after failed attemps I have realized that this is not a viable solution.

Using new experimental bone structure to create Skeleton.
I tried to use the new skeleton structure. When I convert our dae into fbx with blender, I couldn't access the new skeleton structure (Seg fault). I tried one of the meshes author pushed to repository for test. While I could access the node structure, I couldnt get the bone names (Seg fault.)

Adding dummy vertices to the bones.
This fixes the weird hand problem, however there are still some bones (for example 'scene' node) without inverse bindings, these nodes have identity transformations, and thats maybe the the reason why our skeletons are inverse.

We can move with option three or four depending on what type of solution we are looking for. I will start with four and If I can
not create a viable generic solution, will move to option three.

Thanks for the great work!
I agree solution 3 and 4 look like the best fits. I am quite neutral to which way to go for, I had a look at your branch and it seems n.4 is quite simple even at the assimp level however if it cannot fix the inverted skeleton it's maybe not super ideal.
I tried to test your branch and can't quite replicate the fix, basically I:

Changed my assimp from source to your branch
Added the importer setting you mentioned to the AssimpLoader constructor
Recompiled and ran ign gazebo actor.sdf

However I see the same segfaults, am I missing anything?

Hi @luca-della-vedova,
I have 2 things to mention, first, I was doing some speed analysis on object files and created below graph. The column with Assimp Loader without flags does not utilize aiProcess_RemoveRedundantMaterials, aiProcess_SortByPType
aiProcess_PopulateArmatureData and significantly faster than other assimp loaders. I was wondering whether is it important for us to use these flags.

Second,
When I try to move the camera angle more than some degree with a world/mesh (edifice, campus.obj) loaded using  assimp loader,  mesh dissapears from screen. This does not happens with the original loader, did you realize such problem?


Update README.md

Add Free Software Testing Books to 'Suggested Awesome Lists'.

:+1: Thanks!

No problem, keep up with the awesome work :)


Add DTSA to vulnid

@manuel-sommer OK, I have to ask, where are you finding all these?  None of them surprised me that they exist but I'm super curious if these are being reported by a tool you're using or if you're just searching around to find them.
Sorry, my curiosity is getting the better of me. :smile:

A mixture of both. Multiple of them were found through tools, so I advanced my research for future occurances of other findings.


⚠ ClamAV has degraded performance

In 86d1e44, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 47 ms

Resolved: ClamAV performance has improved in 0d25dd2.


Struc to map for query parameters

While trying to execute a cypher query with parameters being passed as a map[string]interface{}.
The problem is converting from a struct to a map by using the unmarshaller, it's converting an int value to a float64.
The documentation of json from docs clearly state:
 To unmarshal JSON into an interface value, Unmarshal stores one of these in the interface value:

bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null

Which is causing a problem as my passed integer value is being stored as a float inside neo4j.
There clearly should be a workaround, but I'm not able to figure it out.

Unfortunately, JSON is not a good candidate since it does not differentiate floats and integers.
The way I would personally go about it would be to manually create the query parameter map all the time.
If that feels to repetitive, you can instead define a function that uses reflection to introspect the struct fields and create the corresponding map.
NOTE: this kind of usage question is more suited to https://community.neo4j.com. GitHub issues are mostly about potential bugs with the driver.


Error When Using the Library in WSL

Describe the bug

An issue arises when using the LightweightCharts.jl library in WSL. Specifically, the lwc_show method fails because the sequence of conditions in the open_browser method is incorrect.

Problem Details:

The method Sys.islinux() returns true for WSL, but the command needed to open a browser with an .html file in WSL differs from a standard Linux environment.

A potential quick fix is to reorder the conditions in the open_browser method.

Additionally, noticed that the detectwsl() method is not defined in the LightweightCharts.jl package.

To Reproduce

Launch Julia on WSL.
Copy the first example from the README.md of the LightweightCharts.jl library.
Paste the code into the REPL and execute it.

julia> using LightweightCharts

julia> t_values = round(Int64, time()) .+ collect(1:500);

julia> x_values = sin.((1:500) / 10);

julia> chart = lwc_line(
           t_values,
           x_values;
           label_name = "lwc_line",
           line_color = "orange",
           line_width = 4,
           line_style = LWC_SOLID,
           line_type = LWC_STEP,
           price_scale_id = LWC_LEFT,
           plugins = LWCPlugin[
               lwc_trend_line(100, 0.32, 200, 0.86; line_color = "#9d4edd"),
               # lwc_delta_tooltip(),
               # lwc_vert_line(150),
               # lwc_crosshair_highlight_bar(),
               # lwc_tooltip(; title = "my_tooltip")
           ],
       )
LightweightCharts.LWCChart(lwc_line)

julia> lwc_show(chart)
Start : This command cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start "/home/alex/lightweightcharts.html"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

true

Expected behavior

A browser window should open displaying the chart.

Additional context

julia> versioninfo()
Julia Version 1.9.0
Commit 8e630552924 (2023-05-07 11:25 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 20 × 12th Gen Intel(R) Core(TM) i7-12700H
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-14.0.6 (ORCJIT, alderlake)
Threads: 1 on 20 virtual cores
Environment:
JULIA_IMAGE_THREADS = 1
pkg> st
Project LightweightCharts v2.2.0
Status ~/bhft/bhft_libs/LightweightCharts.jl/Project.toml
[46f1a544] NanoDates v1.0.3
[db9b398d] Serde v3.4.1
[ade2ca70] Dates

https://github.com/bhftbootcamp/LightweightCharts.jl/pull/25


Allow multiple values for meta.account

Hi and thanks again for your great work!
I am evaluating to build some "shared task list" usecase and i am trying to figure out the correct concept around access policies as this is crucial.
In our usecase, we have multiple organizations with different users inside a project. The idea is to allow to share a task between organizations. Reading through the docs i thought that combining compartment & parameterized access policies might work.
Access Policy
{
  "resourceType": "AccessPolicy",
  "name": "Practitioner Access Policy",
  "resource": [
    {
      "resourceType": "Task",
      "criteria": "Task?_compartment=%organization"
    }
  ]
}

ProjectMembership User of Organization 1234
{
  "resourceType": "ProjectMembership",
  "profile": {
    "reference": "Practitioner/1234",
    "display": "Name"
  },
  "admin": false,
  "access": [
    {
      "parameter": [
        {
          "name": "organization",
          "valueReference": {
            "reference": "Organization/1234",
            "display": "Organization 1234"
          }
        }
      ],
      "policy": {
        "reference": "AccessPolicy/uuid",
        "display": "Practitioner Access Policy"
      }
    }
  ]
}

ProjectMembership User of Organization 5678
{
  "resourceType": "ProjectMembership",
  "profile": {
    "reference": "Practitioner/5678",
    "display": "Name"
  },
  "admin": false,
  "access": [
    {
      "parameter": [
        {
          "name": "organization",
          "valueReference": {
            "reference": "Organization/5678",
            "display": "Organization 5678"
          }
        }
      ],
      "policy": {
        "reference": "AccessPolicy/uuid",
        "display": "Practitioner Access Policy"
      }
    }
  ]
}

Usecase
The user of Organization 1234 creates a task and there is a bot which adds the compartment of Organization 1234 using the meta.account field:
{
  "resourceType": "Task",
  "status": "accepted",
  "intent": "order",
  "code": {
    "coding": [
      {
        "code": "This is a new task",
        "display": "This is a new task"
      }
    ]
  },
  "meta": {
    "compartment": [
      {
        "reference": "Project/uuid"
      },
      {
        "reference": "Organization/1234",
        "display": "Organization 1234"
      }
    ],
    "account": {
      "reference": "Organization/1234",
      "display": "Organization 1234"
    }
  }
}

All users with the same ProjectMembership %organization=Organization/1234 are able to access the resource. While working on the task they figured out that the task needs input from people of Organization/5678 and want to share the task.
However that is not possible using meta.account as this will override the current compartment of Organization/1234 and it would be more like "move" of a task. Do you have any idea of how to solve the issue or do you think i am using a wrong concept around access policies for the usecase?
Thanks for you help
Best,
Niklas

@rahul1 This use case is also something we are trying to accomplish.  Is there any update on a solution for "sharing" resource from Organization to another?

Summary of implementation plan:

Add a new field called meta.accounts as an Reference[]
Duplicate data from meta.account -> meta.accounts[] (and don't overwrite other components of meta.accounts[]
Allow project admin users to write to meta.accounts (similar to meta.account)
Make the meta.compartments field read-only again
the meta.accounts field should be propagated to the meta.compartments of all other resources in the same patient Compartment (and in the future, other compartment definitions)

Fixed in https://github.com/medplum/medplum/pull/5264

Awesome!  We'll check it out.


App linking is not working (without expose port).

Acorn version - acorn version v0.7.0-alpha1-9-gffaff19e+ffaff19e
Steps to reproduce the problem:
Linking of acorn apps is not working when ports are not exposed in the linked container.
cat Acornfilen
containers: {
    "myweb": {
        image: "nginx"
        ports: "80/http"
        files: {
      "/usr/share/nginx/html/index.html": "hello"
          }
        }
}

acorn run -n web1 -f Acornfilen

cat Acornfile
containers: {
	myapp: build: context: "."
	myweb: image: "nginx"
}

acorn run -n mytestlink --link web1:myweb .

From within myapp container , myweb fails to resolve.
 acorn exec mytestlink
root@myapp:/app# curl myweb
root@myapp:/app# curl myweb:80
root@myapp:/app# exit

Note -- In this case , when i expose port 80 in the linked container - web1 in my case , resolution works as expected.

Also when I have the container names to be different in linked app and the app that links it , links resolves as expected.
Following app linking works as expected.
cat Acornfilen
containers: {
    "myweb": {
        image: "nginx"
        ports: "80/http"
        files: {
      "/usr/share/nginx/html/index.html": "hello"
          }
        }
}

acorn run -n web1 -f Acornfilen

cat Acornfile
containers: {
	myapp: build: context: "."
	mywebtest: image: "nginx"
}

acorn run -n mytestlink --link web1:myweb .

acorn exec mytestlink
root@myapp:/app# curl mywebtest
linkedcontainerroot@myapp:/app# exit

@sangee2004 I am having a hard time following this issue. Is it two issues? expose the port and clashing names?
What do you mean by this?

Note -- In this case , when i expose port 80 in the linked container - web1 in my case , resolution works as expected.

@cjellick When i expose the port - ports: expose: "80/http"  , app linking works.

@cjellick these are my findings:

Publishing or not publishing ports does not have an impact on linking. There may have been a bug related to this in the past, but currently it is not a problem.
The other thing that this issue seems to point to is the inability to link an app if the local alias you use for it is the same as one of the container names in the Acornfile. For example, if I have an Acornfile with two containers server and db, but instead of using that db container I want to link an existing app to serve that purpose, I can do acorn run -n myapp --link external-db-app-name:db . and it works now. Maybe it didn't used to work in the past, but I didn't run into any problems. The hostname and everything resolves just fine.

So as far as I can tell, there isn't any work that needs to be done for this issue. I think everything is fixed.

ok, kicking over to @sangee2004

Tested with acorn version v0.7.0-alpha1-148-g7909ed41+7909ed41
Container name resolution works as expected when testing with container names between the app that is linked and the one linking it are the same .


Better SapphireTest::tearDownOnce

See https://github.com/silverstripe/silverstripe-framework/pull/4519 for history.
At the moment it's necessary to call add/remove_extension on an object in order to flush any changes to the extra methods private static. A better solution is a clear method that can be invoked by tests that rely on Config::unnest() to restore extra methods.

The way that extensions are or aren't applied to tests needs to be changed IMO.
If you have a module that applies an extension to a core class, it can cause test failures.
Really, there should be a way of running tests with a white-list of extensions, not by manually blocking them.
Perhaps even tests shouldn't apply extensions at all and this should be down to the extension itself to test the modified behaviour?

I would actually prefer that any configuration change was performed in process isolation, meaning that configuration is immutable (outside of flush) per request. :)
Then we can do things like use traits for extensions, rather than having to dynamically register methods in extensions.

This has been refactored in recent times to a static method. Closing for now.


Stop text overflow in Button fixes #77

On the mailing list it was requested that this PR be reduced to a single commit

Reducing it will not fix this PR.
Besides the extra function which should have been cleaned up, the types are wrong in JS blocks.

I didn't see that request on the mailing list. In order to make it a single commit I'll need to make a new PR that OK?

@Harbs can you be a little more precise. Which function are you referring too and which types are "wrong"? This has been tested and is being used in an application btw.

An updateHost function which takes null is simply sloppy. I'm not sure why it's an extra function at all. The code could easily have been inlined. Even so, a function should not have a required parameter which is only ever called with null.
IUIBase does not have an element getter.

Correction: I was wrong on point 2. IUIBase does inherit an element getter from IRendererObject (through IChild) Sorry about that.

@Harbs  re your first point I was just following the pattern as done in other parts of the SDK for instance see 1 which also does calls updateHost passing null.

https://github.com/apache/royale-asjs/blob/d407bcf8e5a0a1ad23108716ccac63ab28c58f08/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DisabledAlphaBead.as

simplified pull request see #97


TrueNAS support?

Hello!
From my understanding FreeNAS will become TrueNAS core edition. I have the beta installed on a test machine and installed the script and it will not spin down the drives. Will you be testing and implementing your script for TrueNAS?
I'm available for testing if you need a guinea pig!
 Perhaps its a driver issue since I just tested with FreeNAS and the same issue was present. Cards were DELL H740P and I had 2 of them in the system. Replaced them with LSI 9211's and the issue is fixed.

Excuse my delayed response. The last days were quite busy ;)

From my understanding FreeNAS will become TrueNAS core edition. [...] Will you be testing and implementing your script for TrueNAS?

Sure thing. If both FreeNAS and TrueNAS will merge into a single OS I'll test the script on TrueNAS and make adjustments if necessary.

Perhaps its a driver issue since I just tested with FreeNAS and the same issue was present.

The logs you provided look to me like camcontrol definitively has problems with these specific HBA cards...

Cards were DELL H740P and I had 2 of them in the system. Replaced them with LSI 9211's and the issue is fixed.

So it is working for you right now? Is using the LSI 9211's an option or do you need further debugging efforts with the DELL cards?

Yes it is working now, I copied data to the drives. The cache drive does not go into sleep or spindown which is good cause it would defeat the purpose. Everything is working as it should.
As for the H740P's it would be amazing to have them work as they have 8GBs of cache on the cards with battery backups. Are you willing to help me troubleshoot them? I just need to move the data off of it back to its source, I was upgrading my Flash storage NAS (HP 380 Gen9 24xSSD's). The move back should not take too long, I should be free to test later this evening or tomorrow.
Thank you,
J

I'm glad to hear that it is working for you, at least for the moment :)
Regarding the H740P's: I'd be happy to help but unfortunately currently don't have the spare time to help you with the troubleshooting. However... I can at least give you a point to start:
The logs look like there is a problem with camcontrol inside the drive_is_spinning() call inside the spindown_drive() function: https://github.com/ngandrass/freenas-spindown-timer/blob/master/spindown_timer.sh#L210

I recently upgraded my FreeNAS machine to TrueNAS-12.0 and was able to confirm that the script works :tada:
6946a06278707923373948cb6a5a2a3ec58dc41f
I'll therefore close this issue now. If you experience further problems with your H740P's feel free to open up another issue :)


Error Installing on Mac Terminal

Command "python setup.py egg_info" failed with error code 1 in /private/tmp/pip-install-14pvn2be/toolz/
I have no idea what could it be

I'm sorry about your troubles. Have you tried pip install toolz and then tried again?
I haven't really worked on numismatic in quite a while. A project that I saw recently which seems to try to accomplish the same thing which you may want to try is: https://github.com/bmoscon/cryptofeed/
Please note that I have not used cryptofeed and am not associated with it in any way.

It isn't just Mac. It is throwing an error on install (This is on Manjaro)
[coderbook@computer Downloads]$ sudo pip install numismatic
Collecting numismatic
  Downloading https://files.pythonhosted.org/packages/25/18/f18a83ae37e5ba8f697ec5fcde1d68da5be0fd8c80116fb5802b8d827bc0/numismatic-0.1.7-py3-none-any.whl
Collecting six==1.11.0 (from numismatic)
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting certifi==2<IP_ADDRESS> (from numismatic)
  Using cached https://files.pythonhosted.org/packages/40/66/06130724e8205fc8c105db7edb92871c7fff7d31324d7f4405c762624a43/certifi-2<IP_ADDRESS>-py2.py3-none-any.whl
Collecting toolz==0.8.2 (from numismatic)
  Using cached https://files.pythonhosted.org/packages/75/9c/a26de5efd56009e15af607bff6d2a395631e3c20e7c64b861c9bc4b34288/toolz-0.8.2.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-3c3dgii_/toolz/setup.py", line 5, in <module>
        import toolz
      File "/tmp/pip-install-3c3dgii_/toolz/toolz/__init__.py", line 3, in <module>
        from .functoolz import *
      File "/tmp/pip-install-3c3dgii_/toolz/toolz/functoolz.py", line 501
        f.__name__ for f in reversed((self.first,) + self.funcs),
        ^
    SyntaxError: Generator expression must be parenthesized

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-3c3dgii_/toolz/


chore: Removing Paragraph from suggested widget and add Button to suggested widgets

Fixes #30902

Summary by CodeRabbit

New Features

Enhanced feature flag checks for "ab_wds_enabled" and "release_anvil_enabled" to prioritize these flags.
Updated the categorization of certain widgets to include them under "Suggested Widgets" for better visibility and organization.

Refactor

Improved the handling of feature flags to ensure more reliable feature toggling.
Optimized widget tagging system for WDSButtonWidget, WDSHeadingWidget, and WDSParagraphWidget to enhance widget discoverability and categorization.

/build-deploy-preview skip-tests=true

/ok-to-test<EMAIL_ADDRESS>


pickadate

http://amsul.ca/pickadate.js/
i cant validate this, readonly input issue.
is there a way to mark as valid ?

could you provide a jsfiddle/jsbin or similar to reproduce the issue you are seeing... could you describe what exactly the problem is, what you expected and what actually happened?

Just a wild guess. Your issue might be related to the date format? similar to this issue here: 1063.


"disallowTrailingComma: true" + --fix toggles trailing commas

test.js:
var x = {
    a: 1,
    b: 2,
};

.jscsrc
{
    "disallowTrailingComma": true
}

Then
> jscs test.js --fix

(comma is removed)
> jscs test.js --fix

(comma is added again)

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/27587176-disallowtrailingcomma-true-fix-toggles-trailing-commas?utm_campaign=plugin&utm_content=tracker%2F281640&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F281640&utm_medium=issues&utm_source=github).

Can't repro, @hzoo could confirm?

Yeah I can't repro either actually. @jamietre Can you check again? And what version are you using?

Interesting.. I even set up the simple scenario just as in this report to
verify it. Fresh install from npm public registry yesterday. I am on
windows in full disclosure. Will try it in ubuntu vm today and see if I can
repro shortly.
On Oct 22, 2015 9:32 AM, "Henry Zhu"<EMAIL_ADDRESS>wrote:

Yeah I can't repro either actually. @jamietre
https://github.com/jamietre Can you check again? And what version are
you using?
—
Reply to this email directly or view it on GitHub
https://github.com/jscs-dev/node-jscs/issues/1905#issuecomment-150224538
.

Here's the issue... I didn't actually use that .jscsrc, this should repro it:
{
    "preset": "node-style-guide",
    "validateLineBreaks": false,
    "disallowTrailingComma": true,
}

It seems like there's a conflct between the requireTrailingComma directive from the preset. If you add "requireTrailingComma": false then it works.
Not sure if this is a general problem or specific to this rule, but it seems like any disallow rule should invalidate a previous require rule and vice-versa.

I think we like a lot of projects would want to keep rules mostly independent of each other.
Although with 3.0 we should combine require/disallow like in https://github.com/jscs-dev/node-jscs/issues/698 so this won't be an issue.
It's a general issue but the point is that normally you disable the rules in a preset so I would do "requireTrailingComma": false like you mentioned. http://jscs.info/overview#preset
Basically when using a preset you would first run the preset, and disable the rules in the preset and then add the required rules (at least for now)

If this could be added to the "disableTrailingComma" documentation that would be fantastic. I wasted an hour trying to figure out what was going on.

@lf94 do you wanna do it?


提交两个插件 MybatisPlus和OpenFeignPlugin

提交两个插件
1、MybatisPlus
2、OpenFeignPlugin ，适用于openfeign默认的HttpURLConnection请求方式 （feign.Client$Default）

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


Un-pin Coveralls GitHub Action version

#1402 pinned the version of coverallsapp/github-action we use in our CI. We should unpin this and update the .github/workflows/ci.yml file to work with the newer version.

We should unpin this and update the .github/workflows/ci.yml file to work with the newer version.

So master?

This issue is just here to track that we should revert the changes in #1402 (so, change it back to @master). To do that, I need to figure out why CI was failing on master, and it isn't very high priority for me.


IE 11 -- Invalid Character -- Bootstrap Vue -- Popover

Laravel Mix Version: 2.1.11
Node Version: 8.10.0
NPM Version: 3.5.2
OS: laravel homestead running off ubuntu 18.04

Hello.
We are having a very difficult time getting past a particular IE 11 specific error.
package.json

.babelrc
{
  "plugins": [
    "transform-es2015-template-literals"
  ],
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 2%"],
        "uglify": true
      }
    }]
  ]
}

webpack.ix.js
let mix = require('laravel-mix');

mix.js('resources/assets/js/app.js', 'public/js')
    .extract(['vue'])
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sourceMaps();

app.js entry has the following at the top:
import "babel-polyfill";

window.bootstrap = require('bootstrap')
window.axios = require('axios')
window.moment = require('moment')
...

package.json
{
  "private": true,
  "scripts": {
    "dev": "npm run development",
    "development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js  --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
    "watch-poll": "npm run watch -- --watch-poll",
    "hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --watch --watch-poll --config=node_modules/laravel-mix/setup/webpack.config.js",
    "prod": "npm run production",
    "production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
  },
  "devDependencies": {
    "axios": "^0.17",
    "bootstrap": "^4.0.0",
    "bootstrap-vue": "^2.0.0-rc.1",
    "cross-env": "^5.1",
    "es6-promise": "^4.2.4",
    "font-awesome": "^4.7.0",
    "jquery": "^3.2",
    "laravel-mix": "^2.1",
    "lodash": "^4.17.4",
    "popper.js": "^1.12",
    "vue": "^2.5.7"
  },
  "dependencies": {
    "babel-polyfill": "^6.26.0",
    "babel-plugin-transform-es2015-template-literals": "^6.22.0",
    "moment": "^2.22.1",
    "typeahead.js": "^0.11.1"
  }
}

The following lines in a js file loaded by app.js is causing issues, and if commented out, IE11 compilation works OK
import Popover from '../directives/popover';
Vue.directive('popover', Popover);

With those Popover enabled, the following error:
SCRIPT1014: Invalid character
app.js (5235,1)

My gut says that something related to template literals is causing an issue, however with babel-polyfill and the specific transform-literals plugin, I don't see what is causing the issue.
Any help would be greatly appreciated!

Laravel mix already tranforms your template literals,  i never installed transform-es2015-template-literals plugin.
I dont know why you are using babel-polyfill

@ankurk91 thanks for your comment.  i'm trying to figure out the invalid character issue I'm seeing.  It might simply be isolated to popper.js. thanks again.

@ankurk91 -- Also, using babel-polyfill per the Bootstrap Vue documentation for IE 11 support.

Where do you see the error?
Terminal or dev tools console?

The IE 11 dev tools console.  MS Edge is working fine.

Additionally, a search for the back-tick in the console output yields the following, but I am unsure if the error is related:

I suspect some js code is not being transpiled by Babel.
Try to reduce the imported modules one by one to figure out which module is causing this issue.
It would be best if you can share a minimal re production.
This issue is not related to laravel mix I guess.

I was curious if the Vue extraction could cause Vue-related modules to be transpiled incorrectly or not at all.
Thanks very much for your feedback

No, I don't think so.
Just to let you know, if you import an ES6 (Non transpiled) module from node_modules folder then babel-loader will ignore and won't convert it to ES5.

That would mean that code could be quite suspect, correct?
import popover from '../../../../node_modules/bootstrap-vue/src/directives/popover/popover'
import Popper from 'popper.js'
import PopOver from '../../../../node_modules/bootstrap-vue/src/utils/popover.class'
import { assign, keys } from '../../../../node_modules/bootstrap-vue/src/utils/object'
import warn from '../../../../node_modules/bootstrap-vue/src/utils/warn'

What would be the correct procedure for adding in such things?

Thanks.
Is https://npmjs.com/package/babel-node-modules something worth exploring, in your opinion?
I'll try your solution.

You can override webpack configuration via mix.
See how
https://github.com/JeffreyWay/laravel-mix/blob/master/docs/quick-webpack-configuration.md

Here is similar question asked
https://github.com/babel/babel-loader/issues/171

@ankurk91  thanks so much for your help.
based on what you wrote, i figured out i can do this:
import popover from '../../../../node_modules/bootstrap-vue/es/directives/popover/popover'
import Popper from 'popper.js'
import PopOver from '../../../../node_modules/bootstrap-vue/es/utils/popover.class'
import { assign, keys } from '../../../../node_modules/bootstrap-vue/es/utils/object'
import warn from '../../../../node_modules/bootstrap-vue/es/utils/warn'

bootstrap-vue provides es compiled src.  seems to be working for now

Good to know.
Good lesson: always read documentation :smile:

Definitely!
Many thanks, again.