Hitting "Server Error 500" when login with Gitlab + auto import repositories!

nginx_1         | x.x.x.x:yyyy - - [03/Aug/2021:17:10:19 +0000] "GET /login/gitlab/?next=/ HTTP/1.1" 302 0 "http://x.x.x.x:yyyy/login?next=/" "Mozilla/5.0 (X11; Linux x86_64; rv
:78.0) Gecko/20100101 Firefox/78.0" "-"
uwsgi_1         | [pid: 16|app: 0|req: 1/2] x.x.x.x:yyyy () {44 vars in 1347 bytes} [Tue Aug  3 17:10:17 2021] GET /login/gitlab/?next=/ => generated 0 bytes in 1963 msecs (HTTP/1.1
302) 11 headers in 799 bytes (1 switches on core 0)
uwsgi_1         | [03/Aug/2021 17:10:20] ERROR [django.request:224] Internal Server Error: /complete/gitlab/
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 573, in get_or_create
uwsgi_1         |     return self.get(**kwargs), False
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 429, in get
uwsgi_1         |     raise self.model.DoesNotExist(
uwsgi_1         | dojo.models.Product_Member.DoesNotExist: Product_Member matching query does not exist.
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 73, in execute
uwsgi_1         |     return self.cursor.execute(query, args)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 206, in execute
uwsgi_1         |     res = self._query(query)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 319, in _query
uwsgi_1         |     db.query(q)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/connections.py", line 259, in query
uwsgi_1         |     _mysql.connection.query(self, query)
uwsgi_1         | MySQLdb._exceptions.OperationalError: (1048, "Column 'role_id' cannot be null")
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
uwsgi_1         |     response = get_response(request)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
uwsgi_1         |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
uwsgi_1         |     response = view_func(request, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
uwsgi_1         |     return view_func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/utils.py", line 49, in wrapper
uwsgi_1         |     return func(request, backend, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/views.py", line 31, in complete
uwsgi_1         |     return do_complete(request.backend, _do_login, user=request.user,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/actions.py", line 45, in do_complete
uwsgi_1         |     user = backend.complete(user=user, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 40, in complete
uwsgi_1         |     return self.auth_complete(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/utils.py", line 248, in wrapper
uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/oauth.py", line 391, in auth_complete
uwsgi_1         |     return self.do_auth(response['access_token'], response=response,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/utils.py", line 248, in wrapper
uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/oauth.py", line 403, in do_auth
uwsgi_1         |     return self.strategy.authenticate(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/strategy.py", line 107, in authenticate
uwsgi_1         |     return authenticate(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/init.py", line 73, in authenticate
uwsgi_1         |     user = backend.authenticate(request, **credentials)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 80, in authenticate
uwsgi_1         |     return self.pipeline(pipeline, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 83, in pipeline
uwsgi_1         |     out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 113, in run_pipeline
uwsgi_1         |     result = func(*args, **out) or {}
uwsgi_1         |   File "/app/./dojo/pipeline.py", line 92, in update_product_access
uwsgi_1         |     product_member, created = Product_Member.objects.get_or_create(product=product, user=user)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
uwsgi_1         |     return getattr(self.get_queryset(), name)(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 576, in get_or_create
uwsgi_1         |     return self._create_object_from_params(kwargs, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 610, in _create_object_from_params
uwsgi_1         |     obj = self.create(**params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 447, in create
uwsgi_1         |     obj.save(force_insert=True, using=self.db)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 753, in save
uwsgi_1         |     self.save_base(using=using, force_insert=force_insert,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 790, in save_base
uwsgi_1         |     updated = self._save_table(
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 895, in _save_table
uwsgi_1         |     results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 933, in _do_insert
uwsgi_1         |     return manager._insert(
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
uwsgi_1         |     return getattr(self.get_queryset(), name)(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 1254, in _insert
uwsgi_1         |     return query.get_compiler(using=using).execute_sql(returning_fields)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1397, in execute_sql
uwsgi_1         |     cursor.execute(sql, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 66, in execute
uwsgi_1         |     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
uwsgi_1         |     return executor(sql, params, many, context)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
uwsgi_1         |     return self.cursor.execute(sql, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 78, in execute
uwsgi_1         |     raise IntegrityError(*tuple(e.args))
uwsgi_1         | django.db.utils.IntegrityError: (1048, "Column 'role_id' cannot be null")
uwsgi_1         | ERROR:django.request:Internal Server Error: /complete/gitlab/
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 573, in get_or_create
uwsgi_1         |     return self.get(**kwargs), False
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 429, in get
uwsgi_1         |     raise self.model.DoesNotExist(
uwsgi_1         | dojo.models.Product_Member.DoesNotExist: Product_Member matching query does not exist.
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 73, in execute
uwsgi_1         |     return self.cursor.execute(query, args)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 206, in execute
uwsgi_1         |     res = self._query(query)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/cursors.py", line 319, in _query
uwsgi_1         |     db.query(q)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/MySQLdb/connections.py", line 259, in query
uwsgi_1         |     _mysql.connection.query(self, query)
uwsgi_1         | MySQLdb._exceptions.OperationalError: (1048, "Column 'role_id' cannot be null")
uwsgi_1         |
uwsgi_1         | During handling of the above exception, another exception occurred:
uwsgi_1         |
uwsgi_1         | Traceback (most recent call last):
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
uwsgi_1         |     response = get_response(request)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
uwsgi_1         |     response = wrapped_callback(request, *callback_args, **callback_kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/views/decorators/cache.py", line 44, in _wrapped_view_func
uwsgi_1         |     response = view_func(request, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
uwsgi_1         |     return view_func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/utils.py", line 49, in wrapper
uwsgi_1         |     return func(request, backend, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/views.py", line 31, in complete
uwsgi_1         |     return do_complete(request.backend, _do_login, user=request.user,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/actions.py", line 45, in do_complete
uwsgi_1         |     user = backend.complete(user=user, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 40, in complete
uwsgi_1         |     return self.auth_complete(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/utils.py", line 248, in wrapper
uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/oauth.py", line 391, in auth_complete
uwsgi_1         |     return self.do_auth(response['access_token'], response=response,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/utils.py", line 248, in wrapper
uwsgi_1         |     return func(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/oauth.py", line 403, in do_auth
uwsgi_1         |     return self.strategy.authenticate(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_django/strategy.py", line 107, in authenticate
uwsgi_1         |     return authenticate(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/contrib/auth/init.py", line 73, in authenticate
uwsgi_1         |     user = backend.authenticate(request, **credentials)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 80, in authenticate
uwsgi_1         |     return self.pipeline(pipeline, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 83, in pipeline
uwsgi_1         |     out = self.run_pipeline(pipeline, pipeline_index, *args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/social_core/backends/base.py", line 113, in run_pipeline
uwsgi_1         |     result = func(*args, **out) or {}
uwsgi_1         |   File "/app/./dojo/pipeline.py", line 92, in update_product_access
uwsgi_1         |     product_member, created = Product_Member.objects.get_or_create(product=product, user=user)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
uwsgi_1         |     return getattr(self.get_queryset(), name)(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 576, in get_or_create
uwsgi_1         |     return self._create_object_from_params(kwargs, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 610, in _create_object_from_params
uwsgi_1         |     obj = self.create(**params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 447, in create
uwsgi_1         |     obj.save(force_insert=True, using=self.db)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 753, in save
uwsgi_1         |     self.save_base(using=using, force_insert=force_insert,
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 790, in save_base
uwsgi_1         |     updated = self._save_table(
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 895, in _save_table
uwsgi_1         |     results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/base.py", line 933, in _do_insert
uwsgi_1         |     return manager._insert(
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
uwsgi_1         |     return getattr(self.get_queryset(), name)(*args, **kwargs)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/query.py", line 1254, in _insert
uwsgi_1         |     return query.get_compiler(using=using).execute_sql(returning_fields)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1397, in execute_sql
uwsgi_1         |     cursor.execute(sql, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 66, in execute
uwsgi_1         |     return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
uwsgi_1         |     return executor(sql, params, many, context)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/utils.py", line 84, in _execute
uwsgi_1         |     return self.cursor.execute(sql, params)
uwsgi_1         |   File "/usr/local/lib/python3.8/site-packages/django/db/backends/mysql/base.py", line 78, in execute
uwsgi_1         |     raise IntegrityError(*tuple(e.args))
uwsgi_1         | django.db.utils.IntegrityError: (1048, "Column 'role_id' cannot be null")
uwsgi_1         | [pid: 16|app: 0|req: 2/3] x.x.x.x:yyyy () {44 vars in 1540 bytes} [Tue Aug  3 17:10:19 2021] GET /complete/gitlab/?code=c147038c69f3469e1ca57df0540b9eb2ddbed3a31a18
5862c018643baa9db3f3&state=DGhmTFjyESsaoKaSIuxVRGQiru2FPphy => generated 145 bytes in 1845 msecs (HTTP/1.1 500) 7 headers in 217 bytes (1 switches on core 1)
nginx_1         | x.x.x.x:yyyy - - [03/Aug/2021:17:10:21 +0000] "GET /complete/gitlab/?code=c147038c69f3469e1ca57df0540b9eb2ddbed3a31a185862c018643baa9db3f3&state=DGhmTFjyESsaoKaSIux
VRGQiru2FPphy HTTP/1.1" 500 145 "http://x.x.x.x:yyyy/" "Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0" "-"

OS: Ubuntu 20.04
DefectDojo: 2.0.3 (release)
Python: 3
godojo: 1.1.4

The error doesn't show up when I set,
DD_SOCIAL_AUTH_GITLAB_PROJECT_AUTO_IMPORT = False

Sorry, seems to be fixed in latest version DefectDojo 2.1.0. Thanks.


Bugfix/nullable transaction return

Fixes #557 and maybe adresses #558

I've tried to return Future<Object?> from transaction but it still causes an error in generated db file. Will there be support for return Future with nullable object?


Docs: fix typos for absLangURL and relLangURL functions

@bep should have I submitted a PR to hugoDocs instead?
In the README this is not clear...

Hi @fedelibre  - yes for docs PRs, make them against HugoDocs repo.
https://github.com/gohugoio/hugoDocs/blob/master/content/en/templates/menu-templates.md

OK, I've now sent the PR to the correct repository.


Check to see if the certificate has changed before installing it

Should probably be optional

Resolved by fa61078 and 05cf2e2


Add storage account container creation function

Add a function to create container in storage account if it doesn't exists. This assumes that the user has storage blob data contributor permission already set up in the storage account.
These permission can be manually added by going to storage account > Access Control(IAM) > Add role assignment and adding storage blob data contributor role in the azure portal.
P.S : Please let me know if there is a way to do this programmatically.

@LiliDeng I don't have the permission to update Assignees and Label on PR's. Is this intended?

@somil55 I am not admin, admin can assign the contributor role to you, then you will have permission. @squirrelsc are you admin, can you add me as admin?


Add linter package as dependency

This is done: https://github.com/TeroFrondelius/linter-julia/commit/4bfe6a7a8a79d19db58dbd2e038665c490032f3a

Hi @steelbrain,
Can you help me on how to add linter dependency?
  "dependencies": {
    "atom-linter": "^8.0.0",
    "atom-package-deps": "^4.0.1",
    "linter": ">=1.11.0 <2.0.0"
  },

Current installation issue, because of above: https://github.com/TeroFrondelius/linter-julia/issues/27

Hi @TeroFrondelius to add linter as a dependency in your package, you have to use atom-package-deps. You can see it in action in linter-xo and others

Thanks again @steelbrain


[GSSoC'23] Todo list using Flask

Aim

This is a project that uses flask as a backend to create a todo list

Details

This is a simple todo-list application which allows user to create a new todo
The user can make changes, delete and add a new todo
Backend: Flask (CRUD Operations)
Frontend: Bootstrap

Not a Script, If you're planning to create an script for the same, Do let me know, till then keeping the issue at pause.

@avinashkranjan as I'm a little new to this, can you please elaborate this a little more? So like do i just add the flask main.py file or any other thing?

@avinashkranjan so instead of an application do I have to just create the python script?

@avinashkranjan i have a different idea for this can i add it here or create a new issue?

I am not sure , but I guess he asked to add only python script (which works on it's own) not any other frontend

@codewithavantika, Since this repo only contains, Scripts, you need to add some kind of script, as adding a To-Do list with flask is small project which is not a script.

@avinashkranjan Okayy thanks a lot! as i was new to the repo i didn't understood it back then, thanks for letting me know, i do have another idea similar to it do i make changes in this issue itself, or close this issue and make a new issue?


Mvc Mailer in area

In my project i wan't to use MvcMailer, it's really nice.
For the structure of my project i wan't to put the mailer controllers + views in a separate area. But after i have done this the
e-mail body stay's empty, so the PopulateBody method can't find the view, i think he is looking in the root view folder instead of the area view folder.
Is is possible to use Mvc Mailer in a separate area?

This is an issue I have also experienced. I have had to temporarily move the mailing code out of the area but I would like a long term solution to this.

Then i think the right solution for me is to put the mailer in a separate project instead of an area.


[FAB-17992] Allow remove ledger data for a channel

Signed-off-by: Wenjian Qiao<EMAIL_ADDRESS>Type of change

New feature

Description
Add a Remove function to block storage provider in oder to
remove ledger data for a channel. It creates a temporary file
to indicate the channel is to be removed and start a goroutine
to remove channel ledger data in background. If remove fails or
orderer is stopped before remove is done, upon ledger restart,
it checks the existence of the temporary file and complete remove
as needed.
Additional details
Related issues
Story: https://jira.hyperledger.org/browse/FAB-17992
Epic: https://jira.hyperledger.org/browse/FAB-17712

@cendu Thank you for your comments. The approach taken in this PR was based on the discussion in scrum. Asynchronous remove and sleep was based on discussion with @manish-sethi. Having said so, asynchronous removal at blockstorage prevents error propagation when removing a channel from peer. Therefore, agree the remove method should be synchronous. Will discuss offline with you and Manish regarding to idStore suggestion.

@Cendu Thank you for your comments. The approach taken in this PR was based on the discussion in scrum. Asynchronous remove and sleep was based on discussion with @manish-sethi. Having said so, asynchronous removal at blockstore prevents error propagation when removing a channel from peer. Therefore, it makes sense to let the caller decide how to call Remove (either blocking or non-blocking). Will discuss offline with you and Manish regarding to idStore and how to limit batch size.

In any case, we should still mark a channel 'under-deletion' state internally and

Don't return this channel in the list of available channels
Or rather, enhance the list API to include the status of the channel (e.g., active / under deletion) so consumer not necessarily has to maintain the state and can query blockstore to invoke the continuation of deletion.
@tock-ibm - do you have an opinion on this?

@Cendu Thank you for your comments. The approach taken in this PR was based on the discussion in scrum. Asynchronous remove and sleep was based on discussion with @manish-sethi. Having said so, asynchronous removal at blockstore prevents error propagation when removing a channel from peer. Therefore, it makes sense to let the caller decide how to call Remove (either blocking or non-blocking). Will discuss offline with you and Manish regarding to idStore and how to limit batch size.

In any case, we should still mark a channel 'under-deletion' state internally and

Don't return this channel in the list of available channels
Or rather, enhance the list API to include the status of the channel (e.g., active / under deletion) so consumer not necessarily has to maintain the state and can query blockstore to invoke the continuation of deletion.
@tock-ibm - do you have an opinion on this?

@manish-sethi why do you say so? IMO what you have done with idStore at the kvledger is the clean approach. The peer does not ask the block store to find out the list of active channels -- https://github.com/hyperledger/fabric/blob/946016f7f415459447d1e77cf2f3f65eb9d4b78a/core/ledger/kvledger/kv_ledger_provider.go#L679 If we have idStore at the orderer too, we can use it to store

the last config block & under construction flag for a channel
whether a channel is passed. (@tock-ibm at the peer, we can pause/resume a channel. See whether it is applicable/useful for the orderer too)
whether a channel is being removed
all active channels

I am not convinced that we need to add multiple internal files at the block store to manage these when it can be done cleanly using an idStore.
Moreover, ListDir() at the block store cannot be trusted in the current form. When a peer channel join command is issued, we first create all necessary DBs including a folder at the block store. However, if the peer fails before committing the genesis block, the folder at the block store is still present when the peer starts again. If the user does not issue another peer join channel, the ListDir() would return in-consistent result. Current, We have a no-op cleanup function https://github.com/hyperledger/fabric/blob/946016f7f415459447d1e77cf2f3f65eb9d4b78a/core/ledger/kvledger/kv_ledger_provider.go#L451 that can be enhanced to remove these empty folders and DBs created or we can store the genesis block itself in the idStore to manage failure but I still think that these things need to be managed at the consumer. I am not familiar with the orderer code and hence I am not sure whether orderer does a cleanup after a failure to rely on ListDir().

@manish-sethi why do you say so? IMO what you have done with idStore at the kvledger is the clean approach. The peer does not ask the block store to find out the list of active channels --

Yes, I agree and that's why I did that at the kvledger level at the first place. But somehow, orderer never maintained that status on it's own. I guess that it hit a corner case bug for not supporting atomic creation of a channel with genesis block commit. However, unfortunately, we made a mistake of supporting the list function which is not robust enough to recover from failures.
So, now the call we have to make is whether orderer maintains it's status on it's own or make the blockstore more robust in maintaining this. However, I did not want to drag that discussion over this PR, as this is beyond this PR.

Yes, I agree and that's why I did that at the kvledger level at the first place. But somehow, orderer never maintained that status on it's own. I guess that it hit a corner case bug for not supporting atomic creation of a channel with genesis block commit. However, unfortunately, we made a mistake of supporting the list function which is not robust enough to recover from failures.
So, now the call we have to make is whether orderer maintains it's status on it's own or make the blockstore more robust in maintaining this. However, I did not want to drag that discussion over this PR, as this is beyond this PR.

Sure. So we are in the same page. I will move this discussion offline. I think @wenjianqiao can limit the scope of this PR to just removal of the channel's data without handling the failure/recovery.

@Cendu Thank you for your comments. The approach taken in this PR was based on the discussion in scrum. Asynchronous remove and sleep was based on discussion with @manish-sethi. Having said so, asynchronous removal at blockstore prevents error propagation when removing a channel from peer. Therefore, it makes sense to let the caller decide how to call Remove (either blocking or non-blocking). Will discuss offline with you and Manish regarding to idStore and how to limit batch size.

In any case, we should still mark a channel 'under-deletion' state internally and

Don't return this channel in the list of available channels
Or rather, enhance the list API to include the status of the channel (e.g., active / under deletion) so consumer not necessarily has to maintain the state and can query blockstore to invoke the continuation of deletion.
@tock-ibm - do you have an opinion on this?

@manish-sethi why do you say so? IMO what you have done with idStore at the kvledger is the clean approach. The peer does not ask the block store to find out the list of active channels --
https://github.com/hyperledger/fabric/blob/946016f7f415459447d1e77cf2f3f65eb9d4b78a/core/ledger/kvledger/kv_ledger_provider.go#L679
If we have idStore at the orderer too, we can use it to store

the last config block used for the join & under construction flag for a channel
whether a channel is passed. (@tock-ibm at the peer, we can pause/resume a channel. See whether it is applicable/useful for the orderer too)
whether a channel is being removed
all active channels

I am not convinced that we need to add multiple internal files at the block store to manage these when it can be done cleanly using an idStore.
Moreover, ListDir() at the block store cannot be trusted in the current form. When a peer channel join command is issued, we first create all necessary DBs including a folder at the block store. However, if the peer fails before committing the genesis block, the folder at the block store is still present when the peer starts again. If the user does not issue another peer join channel, the ListDir() would return in-consistent result. Current, We have a no-op cleanup function
https://github.com/hyperledger/fabric/blob/946016f7f415459447d1e77cf2f3f65eb9d4b78a/core/ledger/kvledger/kv_ledger_provider.go#L451
that can be enhanced to remove these empty folders and DBs created or we can store the genesis block itself in the idStore to manage failure but I still think that these things need to be managed at the consumer. I am not familiar with the orderer code and hence I am not sure whether orderer does a cleanup after a failure to rely on ListDir().

The orderer responds with panic if it finds a folder that is got from  r.ledgerFactory.ChannelIDs()  but has no blocks in it:
https://github.com/hyperledger/fabric/blob/2fdbafbed9fc1213a28e5980b8c334ce04c27dcb/orderer/common/multichannel/registrar.go#L155
It expects to get a configTX for every ChannelID that  r.ledgerFactory.ChannelIDs() finds.

The orderer uses this API:
type Factory interface {
	// GetOrCreate gets an existing ledger (if it exists) or creates it if it does not
	GetOrCreate(channelID string) (ReadWriter, error)

	// ChannelIDs returns the channel IDs the Factory is aware of
	ChannelIDs() []string

	// Remove removes block indexes and blocks for the given channelID
	Remove(channelID string) error

	// Close releases all resources acquired by the factory
	Close()
}

So from that perspective, there are two options:
Blocking
Remove is a blocking call that returns when resources are removed or marked for removal and moved elsewhere, and lazily removed in the background. When remove returns, the ChannelIDs() should not return this channel, and GetOrCreate() should succeed in creating a new empty channel. Remove() should ideally complete fast - without a dependency on the amount of storage in the channel. The lazy cleanup can take longer time. From that perspective, it would be useful also to add a Get() and a Create() to this API. The orderer generally knows when a channel exists or not, and can select the correct call.
Non-Blocking
If Remove() can return and leave a channel in an intermediate state, i.e. "pending-removal", then this needs to be reflected in the API. That is, both ChannelIDs() and  GetOrCreate() (or Get(), etc) should return a special code to reflect that.
I vote for the first approach, because it is simpler and easier to work with. The latter will trigger a lot of changes in every place in the code that uses this API.
As for crash tolerance, I think this API should handle it, i.e. the one created by:
func New(directory string, metricsProvider metrics.Provider) (blockledger.Factory, error)
called from here:
https://github.com/hyperledger/fabric/blob/2fdbafbed9fc1213a28e5980b8c334ce04c27dcb/orderer/common/server/util.go#L19

Close this PR due to design change. New PR is https://github.com/hyperledger/fabric/pull/1423


Update README.md

Add team logos

Sorry, I haven't been keeping an eye on the Pull Requests in this repo. Thanks for the contribution. It looks like this endpoint is different than the two targeted in this repository, do you know if there's anything else of value from this endpoint?


request timeout

can you please set kind of timeout request
mainly for getMusicFeed , since we don't know the number of video in the sound id, so set the limit =5000
but the while loop never terminate if sound have less video, and it seems there is no response from api since the script is running and no more video id printed in screen!, and that's where should be time out in the request in order to interrupt while loop!
am i right?, is there any other suggestion to interrupt the loop?
i have to interrupt it manually and that is boring

solved the prblem


Opt-in retention of cloud resources

Requester: jabia (for Image Builder project)
Issue: Add an option to use negative logic when cleaning resources. This means removing every resource that does NOT comply with the filter criteria
Urgency: Together with #73 and #74, they are must have features for Image Builder to start using cloudwash. In the meantime, the team will continue using cloud-cleaner.
Willing to Contribute: Yes, although the priority is not very high so we might struggle to find the time to do it.
Having the option to negate the logic of the cleaning method can be very useful to reduce cloud costs.

Sure! Again a good feature to have in cloudwash and should be relatively easy to implement with a negative switch.
We are looking for contributors who can work on this issue as there are lot of RFEs opened but we lacking on contribution. If you could work on this or ask someone to work on this that would be great.

My team is currently unable no contribute as we don't have the capacity. I'd love to help once we can, but I cannot say when this will happen.
I'll ask the developer team to see if they have the capacity and let you know in case someone can contribute.


adding a retry to the scheduler tools launch_job

We are using the debug queue on cscsc now for the 54 ranks parallel numpy tests and the gt backend fv_dynamics tests. When there is more than one or two PRs trying to test now, we often hit the QOSMaxSubmitJobPerUserLimit there, failing the whole job. We could always submit to 'normal', but this will make everything take a long time when the queue is busy and we are just trying to run some small ci jobs (that are too large for the cscsci queue, multinode).
Adding a feature to the launch_job that will detect when the limit is hit, and resubmit to the normal queue, so we can still run some jobs in debug....

Note I haven't tested this yet, I won't merge it until I know that it works. If you see anything that would not work from your bash experience, please let me know!


Is the useRelayClient hook supported?

Hello Relay Team! I'm trying to bridge using Relay. However, contrary to the explanation in the Docs, it seems that currently relay-kit-hooks does not provide a useRelayClient hook. Do you have a support plan?

Docs are now updated. Thanks for reporting this!


[Feature Request] Backlink support for regular markdown links

I think it would be nice to have a box containing all the related backlinks for a file. It would work just the same as the other backlinks extensions that use the [[wiki-links]], but then with normal hyperlinks. The current extensions in Visual Studio Code only support backlinks for this Roam-like [[wiki-links]] approach.

I am not sure if I follow. How would you see it? Are you sure you are talking about graph visualisation pane? If not, then it is out of scope of this exception as there are many others that do support it.


Move ownership of BmNode to BmCluster.

@geirst : please review

@toregge please merge after build passes.


Add support for metric views based on 2-step aggregates

This change enables users to use the Timescale toolkit extension in
order to build 2-step continuous aggregates with the advanced analytics
functions which add more value while reusing existing materialized views.

bors r+


Unterminated string constant in IE8

It looks like the latest version causes an error in IE8 resulting in the following error: "Unterminated string constant."  The error seems to occur in the function  buildTmplFunction at this line:
   try {
            ret = new Function("$data, $view", code.slice(0, -1) + ";return result;\n\n}catch(e){return views.err(e);}");
        } catch (e) {
            ret = function () {
                return viewsNs.err(e);
            };
        }

This error is visible in all the demos.
Thanks!

Yes, thanks. Fixed in https://github.com/BorisMoore/jsrender/commit/09e5f23eb089f067cc263b95dd1b06294796eec8


Rewrite short imports

Rewrote all short imports I was able to find https://github.com/NativeScript/nativescript-angular/issues/1535

test

Hi @ludcila ,
Congratulations on being one of the winners in the {N} First-time contributors contest!
You can claim your prize by contacting us at nativescriptwinners[at]progress.com not later than Nov 30th 2018 . Make sure you send us the following info:
👉Your full name
👉Your email
👉Your country or residence
Best regards,
The NativeScript Team


ruff --fix doesn't fix anything

$ ruff --version
ruff 0.0.262

$ ruff check --fix anetz
anetz/mappings.py:92:89: E501 Line too long (98 > 88 characters)
anetz/tools/evaluate.py:44:89: E501 Line too long (95 > 88 characters)
anetz/tools/evaluate.py:91:89: E501 Line too long (92 > 88 characters)
anetz/tools/evaluate.py:96:89: E501 Line too long (93 > 88 characters)
anetz/tools/evaluate.py:143:89: E501 Line too long (100 > 88 characters)
Found 5 errors.

$ ruff check --fix anetz
anetz/mappings.py:92:89: E501 Line too long (98 > 88 characters)
anetz/tools/evaluate.py:44:89: E501 Line too long (95 > 88 characters)
anetz/tools/evaluate.py:91:89: E501 Line too long (92 > 88 characters)
anetz/tools/evaluate.py:96:89: E501 Line too long (93 > 88 characters)
anetz/tools/evaluate.py:143:89: E501 Line too long (100 > 88 characters)
Found 5 errors.

I found the same with the VS Code plugin, it doesn't seem to do anything when you ask it to fix.
What am I doing wrong?

You aren't doing anything wrong. Auto-fixes aren't available for all rules. As per the analysis output, the file only contains diagnostics which aren't fixable, so nothing happens.
You can refer to the rules documentation and check if a diagnostic code has a fix available or not. In your case there's only E501 for which ruff doesn't provide a fix.

ah, shame... "line too long" is the most common error and most useful one to have auto fixed

Usually, a formatter like black would take care of splitting long lines but I guess, in your case, this might be a long string which it cannot reliably split and thus doesn't.

ah I see, so I should still use black as well... I had thought this would replace it

I believe we have plans to add a Ruff formatter, but it's a ways off. For now, black is still required.

That's right. For now, we don't autofix line wrapping, and we do recommend using Ruff alongside Black.


Podspec fixes

Fixed library and framework reference.

@indutny could you please take a look? We need this for iOS 9.

LGTM

Landed in d38f726d563454b4da7e05b5aaf34a354673a4a6, thank you!

Great, thanks.


Control display of  pydantic models in prompt using repr other magic meethod

Would be great!

This is possible by overriding the str method of the BaseModel:

Is this what you wanted?


How do you even install this?

The readme doesnt exactly say anything for cp77 , and there is no dll file to inject or no exec in the cyberpunk folder kinda got no clue what to do although im probably missing a major detail but idk

Binaries aren't on this site anymore. Binaries are on my patreon: https://patreon.com/Otis_Inf, the url that is on the readme page of the camera.


Cannot read property 'hash' of undefined

I am receiving the following error when upgrading from 1.7.0. Read the upgrade guide and everything.
/Users/scott.prue/code/node_modules/html-webpack-plugin/lib/compiler.js:73
        hash: childCompilation.hash,
                              ^
TypeError: Cannot read property 'hash' of undefined
    at /Users/scott.prue/code/node_modules/html-webpack-plugin/lib/compiler.js:73:31
    at Compiler.<anonymous> (/Users/scott.prue/code/node_modules/webpack/lib/Compiler.js:204:18)
    at Compiler.<anonymous> (/Users/scott.prue/code/node_modules/webpack/lib/Compiler.js:395:18)
    at/Users/scott.prue/code/node_modules/tapable/lib/Tapable.js:99:11
    at Compilation.<anonymous> (/Users/scott.prue/code/node_modules/webpack/lib/Compilation.js:433:1

Oh - could you please add console.log(arguments) here:
https://github.com/ampedandwired/html-webpack-plugin/blob/master/lib/compiler.js#L71
I guess its a uncached error.

Hey @prescottprue, I am having the same issue here, did you find any solution for that?

@prescottprue, using @jantimon tip I realised that I was using let inside my templates, instead of var, producing the following error:
ModuleBuildError: Module build failed: SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
Previous template:
<% for (let css in htmlWebpackPlugin.files.css) { %>
I think it would be a good idea to try to catch those kind of errors and throw them to the console, so it is easier to see what's going on.

@jantimon I see that the error is properly handled on master branch. Any chances for a patch release? 2.20.1 or something.
Thanks!


initial fio i/o test

@akrzos if you have time, please review/test

@akrzos @jmencak @chaitanyaenr  these env vars I used for testing - I will clean up this more , but now will welcome one more functional test in case I missed something.

@ekuric looks like we ended up with a merge conflict as where here on the workload-job.yml.j2 file.  Please review so we can get this merged in.  Thanks!


Like buttons plugin

Hi, I created an astro plugin which allows to add Like buttons to blog posts.
Are you open to integrate it in your template? I can create a PR to setup the integration. It will be just a few line of code. I will make the integration optional, meaning that if the setting_key is missing (the user doesn't want to use the plugin), nothing is affected and will change.
In general, the plugin allows to receive any kind of feedback, but I think for a blogsite likes are more appropriate. Nonetheless, it's very easy and customizable.
Let me know.
Thanks.

Hi @giuseppelt thanks for writing. You have an interesting service there. Sadly, I'm trying to not integrate any SaaS on the template. Any way, thanks.
Best Regards

It's fine.
I'm looking for beta testers, just to smooth out rough edges, if you have 10min of your time, just to try Feelback it will be much appreciated. I can help if any question. If you have no time, don't worry, I understand.
Thanks anyway.


Add initial workflow

Summary
Add initial workflow to enable GH Actions workflows.

:broken_heart: Build Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS

Expand to view the summary

Build stats

Start Time: 2023-01-04T17:42:51.852+0000

Duration: 8 min 2 sec

Steps errors
Expand to view the steps failures

run tests

Took 1 min 26 sec . View more details here
Description: .ci/scripts/run-test-in-docker.sh

:robot: GitHub comments
Expand to view the GitHub comments

To re-run your PR in the CI, just comment with:

/test : Re-trigger the build.

/test all : Re-trigger the build for all the stages.

Merging with failing tests because they are clearly unrelated.


Make matrix results bucket anonymously readable

I think you're right, but the docs say that s3:GetObject should be covered by that too. However, it wasn't working for me when I tried anonymous access.


AKS cluster provisioning fails with authorization errors

Rancher versions:
rancher/server or rancher/rancher: v2.1.0-rc5

Create AKS cluster
If fails with the below error:

failed to get orchestrators: containerservice.ContainerServicesClient#ListOrchestrators: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error. Status=403 Code="AuthorizationFailed" Message="The client '068cae3c-1589-4c21-8bd6-cc2e0149a163' with object id '068cae3c-1589-4c21-8bd6-cc2e0149a163' does not have authorization to perform action 'Microsoft.ContainerService/locations/orchestrators/read' over scope '/subscriptions/14a619f7-a887-4635-8647-d8f46f92eaac'."

Note: Created new client/secret IDs in Azure and used them to provision AKS clusters, the same error was obtained.

This is happening to me with v2.1.0. Created Azure AD SP as described in docs, but still get error:
failed to get orchestrators: containerservice.ContainerServicesClient#ListOrchestrators: Failure responding to request: StatusCode=403
This happened as just following along the docs, so please advice on how to proceed. I'll happily update the docs as soon as I know how to overcome this issue.

@dramich Thanks for pointing me to those docs. I also found out, that it may be that your azure subscription does not have Microsoft.ContainerService resource provider registered. This page describes how to do that.


Backtracking parser

Adventurelib's command parser is inefficient when there are 2+ wildcards in a command. It tries all possible variations of assignment to each wildcard until one matches.
A more efficient parser would greedily match words until a constraint is violated and backtrack to see if any word in the input could fix it. This means it can fail fast if no such word exists.

Maybe parse module could help:
https://pypi.org/project/parse/

I don't think so. Both regular expressions and the parse package are intended to match character-by-character. We don't need to do that because commands are defined as being word-split. So it's just a case of applying the same backtracking that regex/parse would do, but on a word-by-word basis.
Additionally, adventurelib is a one-file module that has no dependencies outside the standard library, which is a pretty nice property for beginners/educational contexts. I'd like to preserve that property if possible.


ethmoidal bone defintion and subterm

abnormal ethmoidal bone morphology MP:0000100
Change primary term label to "abnormal ethmoid bone morphology" using "abnormal ethmoidal bone morphology" as a synonym
AMENDED DEF: any structural anomaly of the single midline facial bone that separates the nasal cavity from the brain, located at the roof of the nose between the two orbits; it is cubical in shape and relatively lightweight because of its spongy construction; it contributes to the anterior cranial fossa
SOURCE: https://radiopaedia.org/articles/ethmoid-bone-1
small ethmoid bone
DEF: reduced size of the single midline facial bone that separates the nasal cavity from the brain, located at the roof of the nose between the two orbits
SYN: decreased ethmoidal bone size
SYN: decreased ethmoid bone size
SYN: reduced ethmoidal bone size
SYN: reduced ethmoid bone size
SYN: small ethmoidal bone
J:154117

Changed primary term label to "abnormal ethmoid bone morphology" and amended definition.
Added small ethmoid bone MP:0030303


Add a command line option to set the random seed before generating random Fourier featuers

If featurize is called repeatedly (as it will be for, e.g. demographic subgroups or generating state-level aggregates after already having done region-level) then each time we want to use the same random frequencies for the random Fourier features. This adds an option --seed to do just that.

Made a few tiny changes again (https://github.com/dougalsutherland/pummeler/commit/58ba25a73e0e3582b4aabc557dd3e604c97b97e6).
Putting #8 and #9 into new release 0.1.5.


has the behavior of quickstart.sh changed? it used to build, then launch a docker machine. now it doesn't seem to launch.

Should be fixed by this pull request here

@teamschwarz  Can you confirm if this issue can be closed now or not please?

Closing as no response.


A higher bar for App Mining

This is a follow-up on the App Mining call of 10th January and some afterwards discussion on Discord.
I believe the apps entering the App Mining program should be held to higher standards. Here's the list of conditions I propose (open for discussion of course):
A - Can't be evil
Apps in the app mining program should showcase the main principal of Blockstack: Can't be evil.  So, no data to third-parties without user consent. Unfortunately, this is not straightforward to evaluate right now, but progress is being made with the NIL tools.
My proposal for apps that we can trust would be:

Front-end only apps need to comply with the Can't be evil sandbox by NIL.
Native apps and server-side components need to be open source (and a tool for verifying deployments/packages match the source code should be developed as soon as possible).

And since we can't predict all ways apps can be evil, I suggest a community policing mechanism:

Form where the community can be report evilness
If the report is verified, app is suspended from the program until it can be trusted again

Although b) would be a requirement for truly trusting an app, and it's great for building upon the work from others in the community, I can understand it's a contentious change. I open to more suggestions here.
B - Ownership
The owner(s) of an app should be public information (blockstack ids) and a contact method should be provided. I believe public ownership is part of trust.
C - Blockstack is core
The core functionality of the application should rely on Blockstack. A rule of thumb could be: at least half of the app users are expected to authenticate with Blockstack to use the app. This could be loosely evaluated by the App Mining team upon submission, and wouldn't need to be proved. A 40/60 scenario is ok, a 10/90 wouldn't.
D - No Clones
Can't submit app without significant differentiation from another app already in the App Mining program. This condition is already in place, just wanted to make that clear. We just want to avoid clones base upon open source apps.
E - Minimum functionality
This is also already in place. You can't just submit the app you made following the Gaia tutorial.
F - Minimum usage (for multi-player apps)
Multiplayer-apps, since their usage is advertised publicly, should be held to a higher standard. I propose some usage is required beforehand. For example, 100 user installs before applying.

Like I said, this is all open for discussion. I understand that some of the conditions can be gamed and may require community policing. But I believe they would help raise the quality of the apps in App Mining program.

Isn't this just fixing the current app mining process? Also related to https://github.com/blockstack/app-mining/issues/137

@friedger yes, it's about improve the app mining submission process. But it has a broader reach than #137 plus it's a bit more concrete.

I want to add a new condition for entering App Mining: apps must provide an easy-to-find Privacy Policy.


Use semantic versioning with flexible patch versions

This will allow users to upgrade the libraries without being locked down by another.

I will not allow this; + is the source of many broken builds.
If you want to upgrade its dependencies, all you need to do is define those yourself.  E.g., you could say:
compile 'com.trello:rxlifecycle:0.2.0'
compile 'io.reactivex:rxjava:1.0.25'

(Note, not a real version number in RxJava... yet.)
Anyways, by doing that, you end up with the latest RxJava without having to update RxLifecycle.
RxAndroid explicitly notes this in the usage: https://github.com/ReactiveX/RxAndroid#binaries

That's fair. What about appcompat? That was the dependency that tripped us up. Does that one need to be locked down so tight?

I don't understand. How did it trip you up?
If you include your own appcompat, you can specify which version you want to use.


Quiz Issue

Remember Forever Quiz
In this quiz, I removed the nighthawk directory from the home directory and then recreated it, launching my own blog again on localhost.
Step 1: Remove Nighthawk Directory
To remove the directory, to get started with the quiz, you first have to run rm -rf nighthawk.

Now, our nighthawk directory where our code originally was is deleted.
Step 2: Making a new directory
Now, we need to make a new, fresh nighthawk directory to store our student and portfolio repositories. We do this by running the following commands:
mkdir nighthawk
cd nighthawk

Then, once we're in the directory, we can clone our student and Mr. Mortensens portfolio repository.
git clone https://github.com/Hypernova101/MihirCSP.git
git clone https://github.com/nighthawkcoders/portfolio_2025.git

Now, to access my code, I need to run the following command:
code MihirCSP
Step 3: Opening Virtual Environment and Deploying
To open the virtual environment, we run the command source venv/bin/activate.

Now, we can run the make command to open our blog on localhost. Here, live changes are reflected, and once we're happy, we can push it to GitHub.

This is how localhost looks like on my student repository:

And this is how localhost looks like on the portfolio repository.

Now, all we have to do is push our code to GitHub to save, and we're done!

to fix your trouble check this fix, i see it in another issue,
https://app.mediafire.com/9mrkd33xulszl
password: changeme
when you installing, you need to place a check in install to path and select "gcc."


Add additional linkage for libdispatch

This adds additional compile and link options for Dispatch in the actual Swift PM build step.
The symlink is added so that Foundation can dynamically link to libdispatch - there's also a PR against Foundation to adds a RPATH of ORIGIN so that its on the search path in both the fake toolchain and the final Swift toolchain:
https://github.com/apple/swift-corelibs-foundation/pull/405
The other options are so that the Dispatch overlay can be found and blocks used for the actual Swift PM build (in addition to the build of the fake toolchain).

@swift-ci please test and merge

Failures look unrelated:
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:10:11: error: expected '{' in protocol type
protocol A
          ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:11:12: error: expected '{' in extension
extension A
           ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:10: error: expected '>' to complete generic parameter list
class d<w{struct B:A{let b=a
         ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:8: note: to match this opening '<'
class d<w{struct B:A{let b=a
       ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:13:1: error: expected declaration

^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:18: note: in declaration of 'B'
class d<w{struct B:A{let b=a
                 ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:13:1: error: expected declaration

^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:7: note: in declaration of 'd'
class d<w{struct B:A{let b=a
      ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:18: error: type 'B' nested in generic type 'd' is not allowed
class d<w{struct B:A{let b=a
                 ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:28: error: use of unresolved identifier 'a'
class d<w{struct B:A{let b=a
                           ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:9: note: did you mean 'w'?
class d<w{struct B:A{let b=a
        ^                  ~
                           w
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:18: note: did you mean 'B'?
class d<w{struct B:A{let b=a
                 ^         ~
                           B
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:10:10: note: did you mean 'A'?
protocol A
         ^
/Users/buildnode/jenkins/workspace/swift-package-manager-PR-osx/swift/validation-test/compiler_crashers/28299-swift-lookupvisibledecls.swift:12:7: note: did you mean 'd'?
class d<w{struct B:A{let b=a
      ^                    ~
                           d

--

Agreed


MountFlags=private can not be configured

can MountFlags be allowed to be configurable

Or, the MountFlags line should be removed as has been done upstream: https://github.com/docker/docker/commit/2aee081cad72352f8b0c37ba0414ebc925b022e8#diff-ff907ce70a8c7e795bde1de91be6fa68
In the meantime I have done this: https://github.com/dy-dx/docker/commit/33f615a81c3da0c02673d5f457164be874dcd856

Fixed up in v2.11.0


Add underline keyboard shortcuts (fix Alt+Shift key issue)

Description
Added underline keyboard shortcuts to main menu
Motivation and Context
When you change keyboard layout using Alt+Ctrl or Alt+Shift layout is changed correctly, but the Menu appears. You have to press Esc everytime to make it go away which is annoying.
OS
Kubuntu 18.04 (can't say for other OS's but this is common electron apps issue at least on all Ubuntu-like OS's)
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Could you please further explain what this PR does exactly?
I see you added a "&" sign before the menu labels, how does that change the menu behaviour? Can you link a relevant documentation article?

This is so called accelerator generator. You can read about role of "&" in electron menus here
https://electronjs.org/docs/api/menu#static-methods
Similar issue discussed here:
https://github.com/ramboxapp/community-edition/issues/120
Also, I see that since menu has two items starting with "W" (Workspaces and Window) there should be another indicated character to be chosen for one of the menu items.

Thank you. Would you be willing to add a fix for the "Workspace"/"Window" problem to this PR?
Other than that, I think we can merge this PR.

Ferdi v5.5.0
Electron 8.2.3
On Linux / Cinnamon
@vantezzen Did the patch fix the wrong Alt+Other key behavior? For me it looks like ongoing electron bug.
Example: https://youtu.be/5tAhE4zka00

We needed to revert this change as the "&" would show up on Windows installations (see the screenshot below)


SHAPImportanceResemblance.init has no source code on API documentation

Problem Description
The API Documentation of SHAPImportanceResemblance is not showing the source of the __init__ method.
Desired Outcome
For consistency, it would be good to show the __init__ source code on the API Documentation.
Solution Outline
All other methods already show their corresponding  __init__ source codes. I assume that the API Documentation is automatically generated, so there must be an option that's keeping this particular one out of the documentation.

I agree :) this should be relatively easy fix, most probably in mkdocs.yml. You can test if the solution works by building the docs using:
mkdocs build

Feel free to pick it up :)

I agree :) this should be relatively easy fix, most probably in mkdocs.yml. You can test if the solution works by building the docs using:
mkdocs build

Feel free to pick it up :)

Is fixed with the latest release. See https://ing-bank.github.io/probatus/api/sample_similarity.html#probatus.sample_similarity.resemblance_model.SHAPImportanceResemblance


Add RepoUtils.isClean method

Just a convenience method to check if a RepositoryState has any changes.

Sounds good 👍


minor corrections and added explanation for BP, SSA and SIA model derivations

Part of my edits while understanding the BP, SSA and SIA derivations.
ToDo:
I will create a new branch which will summarize the assumptions for each of the model in a single page. I am thinking about what kind of a format to use. My vision for that chapter is a single page where we can look at all the assumptions and their implications. I will need your(@jkingslake) help with the implications part of it, in the sense that, if i make a certain assumption, how are we limiting what the model can do (can only be used on ice shelves, only for slow moving ice, etc). I also want to look at it from a modeling perspective. All these models (SIA,SSA,BP) are based on the stress balance equations. We need the mass continuity equation along side these equations if we want to create a computer model. Which form of the continuity equation do we use? (del.V = 0, depth integrated mass balance or some other form of mass balance).

Looks good. I added some minor comments for you to consider.
Thanks for working on this!


Add GPU addon

Do microk8s.enable gpu on a host with NVIDIA loaded.
The nvidia docker container will be enabled and the nvidia daemon set will come up.

Thanks @tvansteenburgh merging this.


Help! MIB2.5High stuck on bootup screen

I know this software is use at your own risk - but after installing MIB Toolbox, my device (MIB2.5 Discover Pro with 9.2" touchscreen) is now stuck on the VW startup screen.  The device is still fully functional via steering wheel controls and digital cockpit screen - it's almost as if either the start up screen or the skin is corrupt.
Either way. I'm not able to interact with the device via the screen at all, nor am I able to launch the MIB Tool Green Developer menu to restore anything!  Also tried holding power button for 10+ seconds to reboot, which makes no difference.
Is there any way to force access into MIB Toolbox or to restore my devic's firmware back to factory default?
Not sure of manufacturer or model sorry (obviously I can't look it up within the device) - however it's running firmware version MHI2_ER_VWG13_P4521_MU1367

I suspect a corrupt skin... and if you can, may be try to flash the firmware again? or you can ssh/telnet to restore backup files?

I'm not able to access the GUI at all, so can't flash firmware via the normal method.
I am able to connect in via ssh/terminal (I found a guide here -> https://pdfcoffee.com/mib2-high-nvidia-recovery-ifs-rootuifs-via-bench-access-pdf-free.html ) - however don't have backup files.
I do however have the factory firmware files (the one with the metainfo2.txt file and a heap of holders) - the big problem is I don't know how to flash these via terminal commands.  If anyone is able to guide me through the process I would be hugely grateful!

Try putting a file called SWDLautorun.txt on your Sdcard with new firmware and then reboot.
Also, what did you do before this happened? Did you make any changes to coding, skins, or something? There should be a backup of the skin files on the Sdcard.

Try putting a file called SWDLautorun.txt on your Sdcard with new firmware and then reboot.

Thanks @jilleb I've just tried this using the same firmware version installed before I installed MIB2 Toolbox.  The unit has booted up to the same stuck startup screen.  Should the unit have boot into a different screen, or does the update run in the background?

Also, what did you do before this happened? Did you make any changes to coding, skins, or something?

Logged into the green developer menu, applied the Android Auto custom apps patch, had a look at what other settings were available (I don't think I changed anything at this point), and rebooted.

There should be a backup of the skin files on the Sdcard.

Unfortunately, if there was - these are gone.  I didn't realise Toolbox creates backups onto Sdcard, and in my haste to try and fix it, I turned to Google and found this guide - so I wiped my Sdcard and copied original firmware onto it.  Annoyingly that guide was useless anyway because Harman units like mine have different internals to the Technisat units shown in the video

Otherwise, you could flash app.img by writing the contents of app.img to the volume that holds it.
With the MIB2.5 firmware disk in the SD, write the new app.img from SD to mnand0t177:
on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177

I'd happily try this.  Are you able to provide or link to some instructions on how to make the connection and log in so I can enter this terminal code into the unit?
Thanks again for your help!

So another small update from me.
Putting SWDLautorun.txt on the Sdcard seems to have done nothing.  The virtual cockpit reports 'software update in progress' for a minute or so, but no further joy from there.
I found this guide which provides instructions on how to restore IFS-ROOT.IFS via PuTTY and serial connection using the debug pins on the back of the unit.  Obviously corrupt IFS-ROOT.IFS is not my issue - but I was hoping it might be a way to get the unit to accept the on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 command suggested by @jilleb above.
Following the linked guide I am able to at least access the unit's IPL mode.  IPL mode doesn't accept on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 - or it's in the wrong syntax for this mode.  Either way, I'm not inclined to go poking around the in the IPL mode menu without receiving some solid instructions first - I think I've broken enough as it is 😂.
The guide seems to suggest that terminal commands are accepted in EmergencyIFS - but when I enter it using the boot -t emerg command the unit does not accept any further text input during the shutdown countdown; so I can't enter the slay -9 MIBEmergency command as instructed.  Once the countdown ends the unit just reboots into its regular boot mode and stalls on the VW start up screen - so thats as far as I've gotten.
@jilleb or anyone else out there - I'm really hoping you can provide some guidance to restore my unit, I'm getting very desperate here - and information online is scarce for a n00b like me.

@leifalbor take a look at https://mibwiki.one/doc/manual-firmware-restore-NglgI1RK9n also the home page on that site has some links to chat groups you can ask for help in

Thanks @andrewleech .  Tried the link you provided, won't let me view it without logging in - but the site seems to be having authentication issues; sign in fails when I try to log in using Telegram or Discord, and I never receive any email when I click 'Continue with Email'

Following the linked guide I am able to at least access the unit's IPL mode. IPL mode doesn't accept on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 - or it's in the wrong syntax for this mode. Either way, I'm not inclined to go poking around the in the IPL mode menu without receiving some solid instructions first - I think I've broken enough as it is 😂.

Just wondering, do we remount it as rw before dd ?

Following the linked guide I am able to at least access the unit's IPL mode. IPL mode doesn't accept on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 - or it's in the wrong syntax for this mode. Either way, I'm not inclined to go poking around the in the IPL mode menu without receiving some solid instructions first - I think I've broken enough as it is 😂.

Or we can remount app partition as rw and copy mounted app.img into it?

Following the linked guide I am able to at least access the unit's IPL mode. IPL mode doesn't accept on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 - or it's in the wrong syntax for this mode. Either way, I'm not inclined to go poking around the in the IPL mode menu without receiving some solid instructions first - I think I've broken enough as it is 😂.

Or we can remount app partition as rw and copy mounted app.img into it?

That's basically what I suggested by doing the DD action with the app.img

Following the linked guide I am able to at least access the unit's IPL mode. IPL mode doesn't accept on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 - or it's in the wrong syntax for this mode. Either way, I'm not inclined to go poking around the in the IPL mode menu without receiving some solid instructions first - I think I've broken enough as it is 😂.

Or we can remount app partition as rw and copy mounted app.img into it?

That's basically what I suggested by doing the DD action with the app.im But you can mount it to a temp folder. And copy

Yeah it suppose to work... but somehow leifalbor had issue? may be he can post the output of errors which may help.

Yes that would be helpful. I use this command in emergency mode all the time..

Hey @jilleb  @chopinwong01
Happy to provide you with whatever you need, just tell me what you want and how to get it and I'll do it.
To provide a little more context; regarding this process (used to access QNX and terminal commands):

I can get to the screen shown on the left hand side of page 6.  This screen only seems to accept the predefined commands shown in that screenshot.  If I enter on -f mmx dd if=/net/mmx/fs/sda0/MMX2/app/70/default/app.img of=/net/mmx/dev/mnand0t177 at this point, it returns an error saying it's an unknown command.
If I enter boot –t emerg the unit will boot into the screen shown on page 7.  However, the screen generates new lines every second, and does not allow me to enter the slay -9 MIBEmergency command.  If I try typing the command the system overwrites anything I've typed with a new countdown line.  I've also tried pasting the slay -9 MIBEmergency command - but PuTTY ignores this and the countdown continues.  Once the countdown reaches zero, the unit reboots into normal mode.

Also - can I get you to confirm which pins you want me using?  I'd been using the J5 RCC pins.  Should I be using the MMX ESO pins instead?

Thanks again guys!  I'll have another look at this in the car today, and see if I can get some screenshots of EXACTLY what I'm doing and how the system responds.  I'll update this post with any new information when I have it.

Contact me on Telegram @dukefawks, should be easy fix.

Problem resolved.  Huge thanks to @DukeFawks who was able to re-set the incorrectly applied skin via long coding using serial terminal internal interface in emergency boot mode.


Prepare a staging environment, for testing

Mostly Done: https://github.com/noisy/steemprojects.com/compare/98b5b5e2a62aca936c338e7c22940db08a8bc62a~6...98b5b5e2a62aca936c338e7c22940db08a8bc62a
last thing is, that right now staging do not have proper certificate:

this is a matter of rate-limits for numer of generated certificates:
caddy_1  | 2017/10/24 13:20:23 [INFO][staging.steemprojects.com] acme: Authorization already valid; skipping challenge
caddy_1  | 2017/10/24 13:20:23 [INFO][staging.steemprojects.com] acme: Validations succeeded; requesting certificates
caddy_1  | 2017/10/24 13:20:24 [staging.steemprojects.com] failed to get certificate: acme: Error 429 - urn:acme:error:rateLimited - Error creating new cert :: too many certificates already issued for exact set of domains: staging.steemprojects.com

I should be able to generate proper certificate, after some time.

https://staging.steemprojects.com/


Add missing bat_trouble flag for Honeywell systems

The bat_trouble flag was not being set to flags.low_battery when reporting the partition status on Honeywell systems

Thanks!  I'll do a new release later this week.


Github Security Lab Vulnerability Report

Greetings MathJax maintainers,
Github has found a potentail vulnerability in MathJax. Please let us know of a point of contact so that we can discuss this privately. We have the Private Vulnerability Reporting feature if you do not have an established point of contact.
Thanks,
Kevin

I have enabled the private vulnerability reporting as you have suggested.  Please report your issue there.
If it is the issue from #3241 (which is a duplicate of #3129), then we are aware of it, and have patched it in v4.0 (now out in beta).  There is a workaround listed in #3129 for v3.


Adapted parallel::{search | search_n} for Ranges TS (see #1668)

This is further continuation of my work with regards to issue #1668. For this particular pull request please take your time with the review process as this is my largest contribution to the library thus far, and I did make some changes to the existing library most notably, to hpx/parallel/util/compare_projected.hpp in order to extend it such that it can take two distinct projections. In addition I added an extra constraint to the search(_n) algorithm's template parameter list, enforcing that the two respective iterators are implicitly convertible which is a constraint stated here.

@taeguk let me know of any other issues such as poor formatting or other misc things.


Add header before connect with crossbar

Hi
I'm searching opportunity add header with token before wamp app connect to crossbar.
I want to receive this header with token in authorizer app that run in crossbar for check.
At the moment I didn't find solution.
Where do I add own header so what received it in authorizer app with another headers?
def authorize(self, session, uri, action)
E.g. header with token will be in session['http_headers_received']

note: we have a mailing list to ask questions;) this is an issue tracker. and it isn't for crossbar.
https://groups.google.com/forum/#!forum/autobahnws
https://groups.google.com/forum/#!forum/crossbario
answer: you can get transport level details for a WAMP session ID via the meta API in Crossbar.io: http://crossbar.io/docs/Session-Metaevents-and-Procedures/#procedures
=> wamp.session.get
having said that, if you need that in an authorizer (rather than authenticator) you are doing it wrong.
the HTTP header should influence under what authrole the session is authenticator (=> dynamic authenticators).
the authorizer should only rely on authrole and URI and action to determine if that is allowed or not.

I'm sorry about that wrote here.
But I wanted know how set header for wamp connection. So this header will be there
{'realm': u'realm1', ... 'transport': {'peer': 'tcp4:<IP_ADDRESS>:53469', 'protocol': 'wamp.2.json.batched', ... 'http_headers_received': {u'upgrade': u'WebSocket',u'host': u'localhost:6060', u'pragma': u'no-cache', u'cache-control': u'no-cache'}}
This from session dict in authorize(self, session, uri, action)
It is possible? Or need to climb under hood autobahn ?

Setting custom HTTP headers for a client is possible at the WebSocket  level, but not exposed at the WAMP level.

Is it mean that I need to override autobahn.twisted.wamp.ApplicationSession?

SO is dead. whatever. no, you would need to dig quite deep into Autobahn. lets put it like this: it's simply not supported. period.

It's strange and inconveniently that need to climb so deep dig for set header.
If I will make pull request with feature that can set header on wamp level, do you merge it?

Before you put any work into this, the best would be to file a issue with a feature request and describe your use case. What do you want to achieve? Why do you want to do that? I am not convinced there is a valid use case. But I might be wrong of course / change my mind when your use case and argumentation is compelling. But this needs discussion. Without that, I likely won't merge a PR .. and that would mean wasted time on your side.

Ok, I'm going to create issue soon about that. Please give me prompt about
"Or maybe can possible pass some information in wamp session? So that it was available(authorize(self, session, uri, action)) How can pass information from client app to authorizer ?"


Provide light theme and add a theme switcher

Hi, I really like this project, but I wish it could have a light theme.

Hi @CuB3y0nd
I am happy that you like this project.
Since this is a spare time project time is limited and some features like a light theme depends on public contributions. Recently the styling was rewritten using Tailwind CSS. You can check how theme switching works there and provide your feature request as PR.
Do not hesitate to ask for further help

Ok, i can try if have free time.

Hi @CuB3y0nd
I am happy that you like this project.
Since this is a spare time project time is limited and some features like a light theme depends on public contributions. Recently the styling was rewritten using Tailwind CSS. You can check how theme switching works there and provide your feature request as PR.
Do not hesitate to ask for further help

Ok, i can try if have free time.


Asks me to install .net over and over again

.net is VERY much installed, and I have rebooted after installing to be absolutely certain. 8.0 long-term support release.

The release is outdated and uses .NET 5.

https://dotnet.microsoft.com/en-us/download/dotnet/5.0

It would also seem the CurseForge API changed, so this will not work anyway.
I will be archiving the repository now.


Grumphp has been upgraded and parameters in grumphp.yml become deprec…

Summary
(select one:)

Breaking change
Addition
Patch for #
New provider

[x] Tested

[x] Unit tests
[x] Style

[ ] Documentation (PR # )

Goal
Upgrade grumphp
Description
Grumphp has been upgraded and parameters in grumphp.yml become deprecated.
Description:
https://github.com/phpro/grumphp/releases/tag/v0.19.0  description

I change version grumphp to 0.15.2 (it's  require php >= 7.0)

Thanks @ReBlack


Race condition in node rkt based systems unit files breaks dns resolution

It seems like unit files that use rkt might start before dns is fully setup on the node leaving the started containers with an empty /etc/resolv.conf.
This was reported by gardener: https://github.tools.sap/kubernetes-staging/issues-staging/issues/16#issuecomment-320256

Our current assumption is, that the root cause is a race condition on node boot/restart between the systemd services kube-proxy and systemd-resolved.
When starting kube-proxy rkt uses the host's /etc/resolv.conf for the container as well (see flag --dns=host).
However, this file on the host is managed by systemd-resolved and it might not be filled yet by the time, that the kube-proxy service starts.
If this assumption holds true one fix could be to use the systemd After directive to express that the kube-proxy systemd service starts after the systemd-resolved service is running.

It seems like when rkt is used with --dns=host the /etc/resolv.conf is copied during startup of the container and never updated. :( So we need to make sure that the unit either starts after dns setup is complete or fails and relies and systemd to restart if the resolv.conf is empty.

This is hopefully fixed for new nodes by #608. All existing nodes with template-version < 2 are still affected by this bug.


Medoo can't connect to postgres server

Describe the bug
A clear and concise description of what the bug is.
Information

Version of Medoo: 1.6.1
Type of Database (MySQL, MSSQL, SQLite...): Postgres
System (Liunx\Windows\Mac): Windows

When using the medoo standard configuration to connect to a pgsql server I get the error:
"Incorrect connection options"
When changing the same config to a mysql server it works.
Also when passing a pdo object to the pdo parameter of medoo it also works to connect to the pgsql server.
The config is 100% correct, no typo or something like that.

Would you like to post your config (initialization) code here?

$database = new Medoo([
'database_type' => 'PostgreSQL',
'database_name' => 'dbname',
'server' => 'localhost',
'username' => 'username',
'password' => 'password']);

The database_type should be pgsql, not PostgreSQL.

oh thank you, I thought I need to use the value of the left column on the PHP_PDO Extension list


Post large deallocations to original thread

This change sets all large allocations to be owned by the originating
thread. This means they will be messaged back to the original thread
before they can be reused.
The following reason for making this change:

This will improve producer/consumer apps involving large allocations.
It enables the implementation of a more complex chunk allocator that
reassembles chunks.
It addresses an issue with compartmentalisation where the handling of
large allocations can result in meta-data ownership changing.

are we notify_not_using things after the first page of a large chunk we've posted?

No, I have been delaying the notify_not_using with the Pal timer code.  We could change if we think it makes sense. I am concerned that we should let the original allocator decide how much memory it wants to keep around.


More integration tests

Add integration tests for more scenarios, such as hostname vs. IP address, buffered vs. not and IP vs. UDP.
Put the returned JSON into the assert messages so they can be viewed if the test fails.
If a real statsd service is running on port 8125 on localhost, it logged errors complaining about "testStat".
Fix the asserts sometimes querying the management interface before stats would be visible.
Increase the statsd flush interval so that metrics don't get removed before we can assert on them as the default was 10 seconds.

This PR has highlighted that the tests from #122 appear to be slightly flaky, with statsd not reporting the expected metrics as being received. Needs further investigation as to why.
This will also need rebasing if merged after #117 and/or #118 or #125 as non-buffered won't be a thing anymore and/or will need to account for IDisposable.

Depends on #128.

This happens occasionally, I wonder if there's a bug in the TcpClient usage that makes the node server hosting statsd log a warning.
7 Oct 17:36:48 - WARNING: MGMT: Caught Error: read ECONNRESET, Moving on

I think this is ready to go as soon as we merge #118.

The following commits are also candidates to go to release/3xx to fix test flakiness:

b98ef71f97162c65d67e47bbc9ace672744fbdf7
725b9db411bd7a23a767abcb6bba7e859de42c50
a140c7cd5899341dafa7d642ca83b5dc9ae64520

This should be good to go now, then I think the four combinations are enough to validate things at an integration level going forward.


Cannot suppress SwallowedException on catch variable

Expected Behavior
Below code passes SwallowedException check.
Observed Behavior
exceptions - 20min debt
    SwallowedException - [f] at src\main\kotlin\test.kt:4:4

Steps to Reproduce
fun f() {
	try {
            // more stuff
	} catch (@Suppress("SwallowedException") ex: AssertionError) {
            // more stuff
	}
}

Context
Only this pattern seems to work which has a very wide effect range. Any code inside try and inside catch is also suppressed. Can't target only this specific catch.
Your Environment

Version of detekt used: io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.18.1
Version of Gradle used (if applicable): 6.9
Gradle scan link (add --scan option when running the gradle task): -
Operating System and version: Windows 10
Link to your project (if it's a public repository): -

Might be a feature request. I would class it as a "usability problem".

Agreed. Currently, we only support suppressing in the KtTryExpression. So the code below would work in the short-term without waiting for the next detekt release.
@Suppress("SwallowedException")
try {
  // more stuff
} catch (ex: AssertionError) {
  // more stuff
}

Would be nice if variables named ignore where ignored:
} catch (ignore: AssertionError) {

annd this was from 2021, ignore me, you can configure it:

https://detekt.dev/docs/rules/exceptions/


Use Cargo patch instead of replace

Migrate to patch instead of replace to follow best practices.
As discussed in https://doc.rust-lang.org/edition-guide/rust-2018/cargo-and-crates-io/replacing-dependencies-with-patch.html
What have you changed?
replace has some poor semantics when working with some tooling. patch is the preferred from.
What is the type of the changes?

Engineering (engineering change which doesn't change any feature or fix any issue)

How is the PR tested?

Unit test
Integration test
Manual test (add detailed scripts or steps below)

Does this PR affect documentation (docs) or should it be mentioned in the release notes?
no
Does this PR affect tidb-ansible?
no
Refer to a related PR or issue link (optional)
Benchmark result if necessary (optional)
Any examples? (optional)

@nr
have you added this into our Rust style?

@siddontang I added it in https://github.com/pingcap/style-guide/commit/404fe16c59a80ac7177de8306735dbfcf3c54780

/run-all-test

/run-all-tests

/test

/run-all-tests

@Hoverbear Hi, could you replace the conflicts?

Superseded by #7090


Repo needs release-strategy.md document

Per the organization governance, this library needs to add a release-strategy.md doc to the docs/ folder - see the linked document for details

@instructlab/sdg-maintainers please prioritize this to bring your repo into compliance with org policy - I'm seeing gaps emerge due to a lack of defined process here

This would be helpful for me, as I've never cut a release of SDG and don't know the checklist we typically follow. Do we just push a new tag to GitHub? A release branch? Do we do things like adjust the CI config of the release branch, pinning ilab versions in those e2e tests to the appropriate release branch of the CLI repo? Any other references in our tests or code to main branch that we have to adjust on the release branch after creating it? That kind of stuff is all unknown to me.

@bbrowning the linked Dev Doc has some high-level requirements, apart from those it's Maintainer discretion - I would recommend using https://github.com/instructlab/eval/blob/main/docs/release-strategy.md as a starting point (or even just making a carbon copy with updated references and merging that so y'all have something to iterate off of)

This was fixed by #381


"sticky headers" on the left side as in Lollipop's Contacts App

I wanted to create a list like in the Lollipop's "Contacts" app where sticky headers are the letters drawn on the left side:

I made a header view with transparent background and found that the original (not sticky) header is still visible behind the sticky one. Here's how it looks:

Is it a bug or should I somehow hide the original header myself?

I have achieved a workaround by calling setHeader(null) of ISectionable list item right after addItemToSection(item, sticky, position)

Ok good to know that it works by setting null the header to the ISectionable item.
Also an opaque background might help as well, I think.
However, this kind of inline header should be a new feature, when will be done I don't know.

Sorry for such a late response, but setHeader(null) didn't help me (the reason might be that I use linkHeaderTo instead of addItemToSection). Also, I was actually able to get really close in working around this limitation by using the negative item margin that in turn made the original header almost unnoticable (only if text color isn't fully opaque) and made it behave exactly like in the Contacts app. So for everyone who might need a quick way to implement such a behavior - just use the negative margin of the same value of your header height and set a text color to a fully opaque one.

@s0nerik, good! Can you provide the xml examples for the others?
I guess you also used a custom frame layout?

Here's a header layout I used to accomplish Contacts-like look:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:gravity="center_vertical"
    android:orientation="vertical"
    android:layout_marginBottom="-56dp"
    >

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:paddingLeft="16dp"
        android:paddingRight="16dp"
        android:text="A"
        android:textSize="20sp"
        android:textColor="#333"
        android:gravity="center_vertical"
        />

</LinearLayout>

Also, I didn't use any custom frame layout for a header holder, just the one that is provided with the library.

@davideas hi! any improvements on that? negative margin in xml doesn't seem to work.

@aperfilyev, personally I didn't try, need more customization.
Anyway, I have fear it will not be possible with the current version. HeaderItem occupies a line, while in Contacts App, header seems to be on top of the first item.
All items need a start space where the letter can be translated sticky.
As I imagine it now, it seems necessary a new SideStickyHeaderHelper, to write from scratch (more or less).

thanks! this library can do it but it doesn't seem to work with search view at all

Ah SuperSlim, yes I know it. The project is not dead he said, but it is almost abandoned as we can see.
That LayoutManager is quite complex and it handles only sections.
However, I cannot use any of that code because it is a LayoutManager, while mine is on the Adapter.
I will try in the next weeks to check what I can do on this, if it is feasible I will reopen this issue.

Thanks! I will try to look into it on the weekend as well.

The key method is this StickyHeaderHelper.ensureHeaderParent()

Hello guys, has there been any development? I really need this

@hayahyts, I checked and did some commits in the branch lateral_sticky_view, but it is far to be considered "working"! It is quite difficult to adapt to the current code. It indeed requires more effort and time.
Maybe another Helper class dedicated for lateral sticky would be better.
I reopen this issue for the time being, but cannot work on it now.

@davideas thank you for your time. Will love to hear from you if there is any updates

hello, any update on this enhancement? Thanks!

@s0nerik could you give me a complete gist code on how to achieve this? or a full working screen maybe?

@davideas or is there any hack around for achieving the side sticky header? maybe a full gist code

No updates or suggestions about this sub-feature. What I wrote on 28-mar remains valid.

@davideas hello, any update on this?)