Group role mapping

Hi!
I have two groups:

sentry_admin
sentry_owner
Where each group have members which are memberof each group.

# sentry_admin, groups, site.io
dn: cn=sentry_admin,ou=groups,dc=site,dc=io
objectClass: groupOfNames
cn: sentry_admin_user
member: uid=sentry_admin_user,ou=people,dc=site,dc=io

# sentry_owner, groups, site.io
dn: cn=sentry_owner,ou=groups,dc=site,dc=io
objectClass: groupOfNames
cn: sentry_owner_user
member: uid=sentry_owner_user,ou=people,dc=site,dc=io

My current ldap configuration is as follows
AUTH_LDAP_USER_SEARCH = LDAPSearch(
    "ou=people,dc=site,dc=io",
    ldap.SCOPE_SUBTREE,
    "(uid=%(user)s)"
)

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    "ou=groups,dc=site,dc=io", ldap.SCOPE_SUBTREE, "(objectClass=groupOfNames)"
)

AUTH_LDAP_SENTRY_USERNAME_FIELD = 'uid'
AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
AUTH_LDAP_REQUIRE_GROUP = None
AUTH_LDAP_DENY_GROUP = None

AUTH_LDAP_USER_ATTR_MAP = {
    'name': 'cn',
    'email': 'mail'
}

AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['cn=sentry_owner,ou=groups,dc=site,dc=io'],
    'admin': ['cn=sentry_admin,ou=groups,dc=site,dc=io']
}

AUTH_LDAP_FIND_GROUP_PERMS   = False
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600

AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = u'Sentry'
# AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member'
AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True
AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = True

User login works perfect, but always as "Member". Is there any way to approach a user management by its group? Not really sure if I'm using
AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['cn=sentry_owner,ou=groups,dc=site,dc=io'],
    'admin': ['cn=sentry_admin,ou=groups,dc=site,dc=io']
}

correctly.

@reynico which version of package do you use?
I had the same issue using latest published version (2.7) but then I realised that this version doesn't support functionality which you are mentioning above... Not sure if that works for you, but installing directly from master solved the problem for me.
I have similar setup as you do, only difference is that in AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING I don't specify full path of group but only value of common name e.g.:
AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
	'owner': ['sentry_owner'],
	'admin': ['sentry_admin'],
	...
}

@anitabee hi! I'm using the latest one as you do. I'll try with the master branch

I am also trying to get it two work, but for some reason the user that is added to the admin group does not have the admin permissions. I already tried to delete the user multiple times but it does not work.

@ntimo you mean user that is in LDAP admin group does not get authenticated as admin in Sentry? If you go to <your_host>/settings/sentry/members/ how do you see your user listed as member or?
Referring to my previous comment, I see that changes from master which support role mapping based on LDAP group are still not published so if you are running on 2.7 version of this package and using AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING setting to detect admin group it won't work.

@anitabee I actually building the plugin my self using gitlab ci from the latest master version from GitHub. Exectaly when I go the <my_host>/manage/users// the user does not have the Administrator checkbox checked, and when loggin in with said user the user also can't change organisation settings.
This is my sentry config:
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfUniqueNamesType

SENTRY_MANAGED_USER_FIELDS = ('email', 'first_name', 'last_name', 'password', )

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'OU=Users,DC=testdomain,DC=firm',
    ldap.SCOPE_SUBTREE,
    '(&(userPrincipalName=%(user)s)(memberOf:1.2.840.1135<IP_ADDRESS>1:=CN=sentry-users,OU=Sentry,OU=Security,DC=testdomain,DC=firm))',
)

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    'OU=Sentry,OU=Security,DC=testdomain,DC=firm',
    ldap.SCOPE_SUBTREE,
    '(objectClass=groupOfNames)'
)

AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
AUTH_LDAP_REQUIRE_GROUP = None
AUTH_LDAP_DENY_GROUP = None

AUTH_LDAP_USER_ATTR_MAP = {
    'name': 'cn',
    'email': 'mail'
}

AUTH_LDAP_FIND_GROUP_PERMS = False
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600

AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = u'SentryOrg'
AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member'
AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['sentry-owners'],
    'admin': ['sentry-admins'],
    'member': ['sentry-developers']
}

AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True
AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = False
AUTH_LDAP_SENTRY_USERNAME_FIELD = 'userPrincipalName'

AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
    'sentry_ldap_auth.backend.SentryLdapBackend',
)

I see, one thing I noticed though, when searching for groups you use groupOfNames:
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
    'OU=Sentry,OU=Security,DC=testdomain,DC=firm',
    ldap.SCOPE_SUBTREE,
    '(objectClass=groupOfNames)'
)

But you set AUTH_LDAP_GROUP_TYPE to GroupOfUniqueNamesType() if your group objectClass in LDAP is groupOfNames I think you need to use: AUTH_LDAP_GROUP_TYPE = GroupOfNamesType()

@anitabee When I set AUTH_LDAP_GROUP_TYPE = GroupOfNamesType() I get the following error in the log when starting sentry !! Configuration error: NameError: name 'GroupOfNamesType' is not defined

Sounds like import error?
Did you imported it from django_auth_ldap.config import LDAPSearch, GroupOfNamesType?

I indeed used the wrong import. But this still does not fix the issue that the user is still just a Member of the org and not the Admin of the Org.

Huh I'm out of ideas :(, but I would validate that group queries are proper towards LDAP. Did you tried to run Sentry in debug mode? If so what are results from group query? For me I get something like this:
08:28:21 [DEBUG] django_auth_ldap: search_s('ou=Users,dc=example,dc=org', 2, '(cn=%(user)s)') returned 1 objects: cn=john,ou=users,dc=example,dc=org
08:28:21 [DEBUG] django_auth_ldap: search_s('ou=Users,dc=example,dc=org', 2, '(cn=%(user)s)') returned 1 objects: cn=john,ou=users,dc=example,dc=org
08:28:21 [DEBUG] django_auth_ldap: search_s('ou=Groups,dc=example,dc=org', 2, '(&(objectClass=groupOfUniqueNames)(uniqueMember=cn=john,ou=users,dc=example,dc=org))') returned 1 objects: cn=sentry_admin,ou=groups,dc=example,dc=org
08:28:21 [DEBUG] django_auth_ldap: search_s('ou=Groups,dc=example,dc=org', 2, '(&(objectClass=groupOfUniqueNames)(uniqueMember=cn=john,ou=users,dc=example,dc=org))') returned 1 objects: cn=sentry_admin,ou=groups,dc=example,dc=org
08:28:21 [DEBUG] django_auth_ldap: Created Django user john
08:28:21 [DEBUG] django_auth_ldap: Created Django user john
08:28:21 [DEBUG] django_auth_ldap: Populating Django user john
08:28:21 [DEBUG] django_auth_ldap: Populating Django user john

Not sure if it helps you, but I can share development setup that works for me.
This is my dev Groups LDIF:
✘  ~/ve/docker-sentry-ldap/9.1   master ●  ldapsearch -H ldap://localhost:389 -x -D "cn=my_super_powerfull_user,dc=example,dc=org" -b "ou=Groups,dc=example,dc=org" -W
# extended LDIF
#
# LDAPv3
# base <ou=Groups,dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# Groups, example.org
dn: ou=Groups,dc=example,dc=org
ou: Groups
objectClass: organizationalUnit
objectClass: top

# sentry_admin, Groups, example.org
dn: cn=sentry_admin,ou=Groups,dc=example,dc=org
uniqueMember: cn=john,ou=Users,dc=example,dc=org
cn: sentry_admin
objectClass: groupOfUniqueNames
objectClass: top

# sentry_owner, Groups, example.org
dn: cn=sentry_owner,ou=Groups,dc=example,dc=org
uniqueMember: cn=anita,ou=Users,dc=example,dc=org
cn: sentry_owner
objectClass: groupOfUniqueNames
objectClass: top

Conf for package:
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfUniqueNamesType

AUTH_LDAP_SERVER_URI = 'ldap://my-ldap:389'
AUTH_LDAP_BIND_DN = 'cn=my_super_powerfull_user,dc=example,dc=org'
AUTH_LDAP_BIND_PASSWORD = '*********'

AUTH_LDAP_USER_SEARCH = LDAPSearch(
    'ou=Users,dc=example,dc=org',
    ldap.SCOPE_SUBTREE,
    '(cn=%(user)s)'
)

AUTH_LDAP_GROUP_SEARCH = LDAPSearch(
   'ou=Groups,dc=example,dc=org',
    ldap.SCOPE_SUBTREE,
   '(objectClass=groupOfUniqueNames)'
)

AUTH_LDAP_GROUP_TYPE = GroupOfUniqueNamesType()
AUTH_LDAP_USER_ATTR_MAP = {'username': 'mail', 'name': 'cn', 'email': 'mail'}

AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = 'Sentry'
AUTH_LDAP_SENTRY_SUBSCRIBE_BY_DEFAULT = False
AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = False
AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member'

AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
    'owner': ['sentry_owner'],
    'admin': ['sentry_admin'],
}

AUTH_LDAP_FIND_GROUP_PERMS = True
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600

AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
    'sentry_ldap_auth.backend.SentryLdapBackend',
)

requirements.txt
https://github.com/Banno/getsentry-ldap-auth/archive/master.zip
django-auth-ldap <=1.2.17

Is it possible that AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING has not worked at all?
Starting from the source code, the attribute group_names is used.
https://github.com/Banno/getsentry-ldap-auth/blob/a756d2e9ab013fe1d127b0b21f6edae67174ad2f/sentry_ldap_auth/backend.py#L87
But this attribute can only be used when AUTH_LDAP_MIRROR_GROUPS is set to True.

https://django-auth-ldap.readthedocs.io/en/latest/users.html#direct-attribute-access
group_names: The set of groups that this user belongs to, as simple names. These are the names that will be used if AUTH_LDAP_MIRROR_GROUPS is used.

https://django-auth-ldap.readthedocs.io/en/latest/reference.html#auth-ldap-mirror-groups
AUTH_LDAP_MIRROR_GROUPS
If True, LDAPBackend will mirror a user’s LDAP group membership in the Django database. Any time a user authenticates, we will create all of their LDAP groups as Django groups and update their Django group membership to exactly match their LDAP group membership. If the LDAP server has nested groups, the Django database will end up with a flattened representation.

If AUTH_LDAP_MIRROR_GROUPS = True in sentry.config.py it will lead to a crash during the login Sentry.

Did anyone get this working? I have role mapped but every user that login for first time the default "member" role is assinged to him. So role mapping dont work for me :(

#############
LDAP AUTH
#############
import ldap
from django_auth_ldap.config import LDAPSearch, GroupOfNamesType, NestedGroupOfNamesType
Server URI
AUTH_LDAP_SERVER_URI = os.getenv("AUTH_LDAP_SERVER_URI", "")
Define ldap_config template variables (Not natively used by django-auth-ldap)
AUTH_LDAP_BASE  = os.getenv("AUTH_LDAP_BASE", "")
AUTH_LDAP_USER_BASE = 'cn=users,' + AUTH_LDAP_BASE
AUTH_LDAP_GROUP_BASE = "cn=groups," + AUTH_LDAP_BASE
Instead of a BIND Search Account, using authenticated user to search
AUTH_LDAP_BIND_AS_AUTHENTICATING_USER = True
If a user's DN is producible from their username, we don't need to search.
AUTH_LDAP_USER_DN_TEMPLATE = "uid=%(user)s," + AUTH_LDAP_USER_BASE
AUTH_LDAP_USER_ATTR_MAP = {
'username': 'uid',
'name': 'cn',
'email': 'mail'
}
AUTH_LDAP_MAIL_VERIFIED = True
AUTH_LDAP_GROUP_FILTER = "(objectClass=groupOfNames)"
AUTH_LDAP_GROUP_SEARCH = LDAPSearch(AUTH_LDAP_GROUP_BASE,ldap.SCOPE_SUBTREE, AUTH_LDAP_GROUP_FILTER)
AUTH_LDAP_GROUP_TYPE = GroupOfNamesType(name_attr="cn")
AUTH_LDAP_REQUIRE_GROUP = "cn=sentry-access," + AUTH_LDAP_GROUP_BASE
AUTH_LDAP_DENY_GROUP = None
AUTH_LDAP_FIND_GROUP_PERMS = True
AUTH_LDAP_CACHE_GROUPS = True
AUTH_LDAP_ALWAYS_UPDATE_USER = True
AUTH_LDAP_GROUP_CACHE_TIMEOUT = 3600
AUTH_LDAP_SENTRY_DEFAULT_ORGANIZATION = os.getenv("AUTH_LDAP_DEFAULT_ORGANIZATION", "")
AUTH_LDAP_DEFAULT_SENTRY_ORGANIZATION = u'Sentry'
AUTH_LDAP_SENTRY_ORGANIZATION_ROLE_TYPE = 'member'
AUTH_LDAP_USER_FLAGS_BY_GROUP = {
'owner': "cn=sentry-owner," + AUTH_LDAP_GROUP_BASE,
'admin': "cn=sentry-admin," + AUTH_LDAP_GROUP_BASE,
'manager': "cn=sentry-manager," + AUTH_LDAP_GROUP_BASE,
'member': "cn=sentry-member," + AUTH_LDAP_GROUP_BASE
}
AUTH_LDAP_SENTRY_GROUP_ROLE_MAPPING = {
'owner':  ['sentry-owner'],
'admin': ['sentry-admin'],
'manager': ['sentry-manager'],
'member': ['sentry-member']
}
AUTH_LDAP_SENTRY_ORGANIZATION_GLOBAL_ACCESS = True
AUTHENTICATION_BACKENDS = AUTHENTICATION_BACKENDS + (
'sentry_auth_ldap.backend.SentryLdapBackend',
)
Optional logging for diagnostics.
LOGGING['disable_existing_loggers'] = False
import logging
logger = logging.getLogger('django_auth_ldap')
logger.setLevel(logging.DEBUG)
This is how I successfully make it work on my side.
I might have some extra stuff not really needed but at least I got able to have my permission from LDAP.
This is use with getsentry helm chart and it is working with LDAP on FreeIPA.
Make sure to set up these variable in your dockerfile:
      env:
        - name: AUTH_LDAP_DEFAULT_ORGANIZATION
          value: sentry
        - name: AUTH_LDAP_SERVER_URI
          value: ldaps://<url>
        - name: AUTH_LDAP_BASE
          value: cn=accounts,dc=domain,dc=com


'NotFoundError' on get_transactions_to_address

Hi,
i'm currently executing this:
account = Tron().create_account

tron = Tron(**{"private_key": account.private_key, "default_address": account.address.hex})

address = tron.default_address.hex
transactions = tron.trx.get_transactions_to_address(address=address)

But i get this error on the last line:
tronapi.exceptions.NotFoundError: (404, '{"error":{"code":404,"status":"Not Found"}}', {'error': {'code': 404, 'status': 'Not Found'}}, 'https://api.trongrid.io/walletextension/gettransactionstothis')

But if i execute https://developers.tron.network/reference#transaction-information-by-account-address directly then it works.

Ah, i just read this

Note: this is no longer supported by TronGrid. Please refer to our v1 API /accounts/address/transactions or use TronGrid JS.

I guess it would be nice to remove that method and check if others already need to be removed and try to implement the alternative if not already happened

Maybe something like this could be integrated
import json
import requests

from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry

class Trongrid:

    __API_URL_BASE = "https://api.trongrid.io/v1/"

    def __init__(self, api_base_url=__API_URL_BASE):
        self.api_base_url = api_base_url
        self.request_timeout = 60

        self.session = requests.Session()
        retries = Retry(total=5, backoff_factor=0.5, status_forcelist=[502, 503, 504])
        self.session.mount('http://', HTTPAdapter(max_retries=retries))

    def __request(self, url):
        try:
            response = self.session.get(url, timeout=self.request_timeout)
            content = json.loads(response.content.decode("utf-8"))
            response.raise_for_status()
            return content
        except Exception as e:
            try:
                raise ValueError(content)
            except UnboundLocalError as e:
                pass
            raise

    def __api_url_params(self, api_url, params):
        if params:
            api_url += '?'
            for key, value in params.items():
                api_url += "{0}={1}&".format(key, value)
            api_url = api_url[:-1]
        return api_url

    def get_trx_info_by_account(self, address, **kwargs):
        api_url = f"{self.api_base_url}accounts/{address}/transactions"
        api_url = self.__api_url_params(api_url, kwargs)
        return self.__request(api_url)


Unable to compile on Windows with GCC.

Perhaps I'm just being stupid, but any time I run cmake, it attempts to execute the MSVC compilation path and utilize nmake. That's the jist of what I'm getting, anyways, I have no experience with cmake. It has made compiling this an impossibility, which is a shame because I really do need to use this on a non-git project. Below is the error I get trying to compile it.
F:\Software Development\Sources\cfltk-main\src>cmake .. -D CMAKE_C_COMPILER="F:\Software Development\mingw32\bin\gcc.exe" -D CMAKE_CXX_COMPILER="F:\Software Development\mingw32\bin\g++.exe"
CMake Error at CMakeLists.txt:3 (project):
  Running

   'nmake' '-?'

  failed with:

   The system cannot find the file specified

-- Configuring incomplete, errors occurred!```

I may also be totally misunderstanding how to use this. I am pretty new to C programming, so that might be a problem.

CMake is a build-system generator. If it only finds nmake it will use it. On windows if it finds nothing it’ll still try to use nmake. You can try installing a different build syste like ninja and point CMake to it using -DCMAKE_MAKE_PROGRAM="F:\ninja.exe"

Would you mind breaking that down like I'm 3? I got that it's going to try to use NMake but I have no idea why that's the case, especially since I'm trying to set it up for MingW.
Does MSYS2 count as a build system compatible with CMake? My friend directed me towards it.

Yes msys2 is a saner way of using mingw on windows. It has a package manager which you can use to download the tools you need for the build:
pacman -S curl tar git $MINGW_PACKAGE_PREFIX-gcc $MINGW_PACKAGE_PREFIX-cmake $MINGW_PACKAGE_PREFIX-make $MINGW_PACKAGE_PREFIX-ninja --needed
source shell mingw64
git clone https://github.com/MoAlyousef/cfltk
cd cfltk
git submodule update --init --recursive

Then invoke cmake with your required flags like in the readme


Add php7.1 and php7.2 to travis.yml

Add php7.1 and php7.2 to travis.yml

@zackproser
Can you review and merge this PR?

Looks good, thank you!


Fix to enable lowering of 16-bit types

Before this PR, the IR created in airrt-to-ipu was like
           func.func @matmul_8x32_16xi32__dispatch_0_matmul_8x32x16_i16xi16xi32(%arg0: memref<64xi32>, %arg1: memref<256xi32>, %arg2: memref<8x32xi32>) {
             %c0 = arith.constant 0 : index
             %0 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : memref<8x16xi16>
             memref.assume_alignment %0, 64 : memref<8x16xi16>
             %1 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : memref<16x32xi16>
             memref.assume_alignment %1, 64 : memref<16x32xi16>
             %2 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) alignment(64) offset(%c0) : memref<8x32xi32>
             memref.assume_alignment %arg2, 64 : memref<8x32xi32>
             %3 = builtin.unrealized_conversion_cast %0 : memref<8x16xi16> to memref<64xi32>
             aiex.ipu.dma_memcpy_nd(0, 0, %arg0[0, 0, 0, 0][4, 1, 8, 8][0, 0, 8]) {id = 0 : i64, metadata = @airMemcpyId4} : memref<64xi32>

The hal.interface.binding.subspan ops are then never dead-code-eliminated, I assume because the memref.assume_alignment cannot be removed (it might throw?)
The IR we want the pass to generate should have %arg1 and %arg2 being the operands to hal.interface.binding.subspan ops. i.e. we want:
           func.func @matmul_8x32_16xi32__dispatch_0_matmul_8x32x16_i16xi16xi32(%arg0: memref<64xi32>, %arg1: memref<256xi32>, %arg2: memref<8x32xi32>) {
             %c0 = arith.constant 0 : index
             %0 = hal.interface.binding.subspan set(0) binding(0) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : memref<8x16xi16>
             memref.assume_alignment %arg0, 64 : memref<64xi32>
             %1 = hal.interface.binding.subspan set(0) binding(1) type(storage_buffer) alignment(64) offset(%c0) flags(ReadOnly) : memref<16x32xi16>
             memref.assume_alignment %arg1, 64 : memref<256xi32>
             %2 = hal.interface.binding.subspan set(0) binding(2) type(storage_buffer) alignment(64) offset(%c0) : memref<8x32xi32>
             memref.assume_alignment %arg2, 64 : memref<8x32xi32>
             %3 = builtin.unrealized_conversion_cast %0 : memref<8x16xi16> to memref<64xi32>
             aiex.ipu.dma_memcpy_nd(0, 0, %arg0[0, 0, 0, 0][4, 1, 8, 8][0, 0, 8]) {id = 0 : i64, metadata = @airMemcpyId4} : memref<64xi32>

In this case the hal.interface.binding.subspan ops can be removed in a subsequent canonicalization pass.
@fifield this is my goal, and the "peep-hole" pattern I've added achieves this, although you might have a neater way of doing this.

Is this be a limitation of the lowering I added in #425? What's supposed to happen is that both the function args and the air dma operands are converted to i32 types and an unrealized conversion cast is inserted in both places, then the casts get canonicalized away. I'm not sure what your input IR looks like, maybe I made some wrong assumptions.

Is this a limitation of the lowering I added in #425? What's supposed to happen is that both the function args and the air dma operands are converted to i32 types and an unrealized conversion cast is inserted in both places, then the casts get canonicalized away. I'm not sure what your input IR looks like, maybe I made some wrong assumptions.

I think so.
My understanding of what is happening (before this PR) is that you go from
%0 = hal.load
memref.assume %0
air.dma %0
to
%0 = hal.load
memref.assume %0
%1 = conversion_cast %0
air.dma %1
to
%0 = hal.load
memref.assume %0
%1 = conversion_cast %arg0
air.dma %1
The hal.load is not DCE'd because it's result is consumed by the memref.assume op.
The pattern added here transfers the memref.assume op consume the conversion_cast's output rather. This means that the hal.load can be DCE'd.
It definitely helps lowering my bfloat16 IREE matmul!

If #449 doesn't help then I'd like to at least capture the problem in a test that doesn't depend on hal dialect


Getting Internal Server Error when exporting parts list

Please verify that this bug has NOT been raised before.

[X] I checked and didn't find a similar issue

Describe the bug*
Trying to export a list of around 1550+ parts.  Whereas before it was working fine, now I am getting an internal server error.

Previously working, a couple of additions to the parts and now cannot export.   Error logs on Inventree also posted.
Part-2024-07-14 (1).csv
This is my last successful part export
Steps to Reproduce
Go to admin
Go to Parts
Go to Export
Expected behaviour
CSV would be generated
Deployment Method

[ ] Docker
[ ] Package
[ ] Bare metal
[ ] Other - added info in Steps to Reproduce

Version Information
Version Information:
InvenTree-Version: 0.15.4
Django Version: 4.2.12
Database: sqlite3
Debug-Mode: False
Deployed using Docker: False
Platform: Linux-5.10.0-30-amd64-x86_64-with-glibc2.31
Installer: None
Active plugins: [{'name': 'InvenTreeBarcode', 'slug': 'inventreebarcode', 'version': '2.0.0'}, {'name': 'InvenTreeCoreNotificationsPlugin', 'slug': 'inventreecorenotificationsplugin', 'version': '1.0.0'}, {'name': 'InvenTreeCurrencyExchange', 'slug': 'inventreecurrencyexchange', 'version': '1.0.0'}, {'name': 'InvenTreeLabel', 'slug': 'inventreelabel', 'version': '1.0.0'}, {'name': 'InvenTreeLabelMachine', 'slug': 'inventreelabelmachine', 'version': '1.0.0'}, {'name': 'InvenTreeLabelSheet', 'slug': 'inventreelabelsheet', 'version': '1.0.0'}, {'name': 'DigiKeyPlugin', 'slug': 'digikeyplugin', 'version': '1.0.0'}, {'name': 'LCSCPlugin', 'slug': 'lcscplugin', 'version': '1.0.0'}, {'name': 'MouserPlugin', 'slug': 'mouserplugin', 'version': '1.0.0'}, {'name': 'TMEPlugin', 'slug': 'tmeplugin', 'version': '1.0.0'}]
Please verify if you can reproduce this bug on the demo site.

[ ] I can reproduce this bug on the demo site.

Relevant log output
No response

@mikeabiz this is likely due to the larger dataset taking a while to encode and export. This is an issue that we have addressed in https://github.com/inventree/InvenTree/pull/6911 with a fully refactored import / export workflow. This will be available in the next minor release (0.16.0)


support for shadow ioeventfd

Signed-off-by: Thanos Makatos<EMAIL_ADDRESS>

should be make this a config option, as it's not something officially supported by anything else?

My primary goal was to get some initial feeback, I think until we hear back from ElenaU about ioregionfd we should leave this unmerged.

should be make this a config option, as it's not something officially supported by anything else?

sure

should be make this a config option, as it's not something officially supported by anything else?

done

should add some py tests too?

yep I forgot

should add some py tests too?

yep I forgot

I'm not sure how to add new tests because we rely on a #define at build time to enable support for shadow ioeventfd, do you know if this is straightforward to do in meson? Alternatively, we always include support for shadow ioeventfd and enable it during runtime differently, e.g. via an environment variable or setting some flag when creating the context? Or would that be too dangerous?

should add some py tests too?

yep I forgot

I'm not sure how to add new tests because we rely on a #define at build time to enable support for shadow ioeventfd, do you know if this is straightforward to do in meson? Alternatively, we could always include support for shadow ioeventfd and enable it during runtime differently, e.g. via an environment variable or setting some flag when creating the context? Or would that be too dangerous?

It should be a meson option, that then sets a define. then you can look at the meson option to decide whether to run those test cases.
https://mesonbuild.com/Build-options.html

will review when tests are passing

Looks good, just nits. Mind adding a short explanation to docs/ too ?

sure


No longer able to initialize client

What is the problem?
Aws secret manager with aws_config no longer working.
expected struct `aws_types::config::Config`, found struct `aws_config::Config`
Note: expected reference `&aws_types::config::Config` found reference `&aws_config::Config`
Note: perhaps two different versions of crate `aws_types` are being used?

No longer can initialize the clients following examples.
aws-sdk-secretsmanager = "0.7"
aws-config = "0.8"

The code block that fails, this is a barebones new project.
use aws_config::meta::region::RegionProviderChain;
use aws_sdk_secretsmanager::{Client, Error, PKG_VERSION, Region};
...

let region_provider: RegionProviderChain = RegionProviderChain::default_provider();
let shared_config = aws_config::from_env().region(region_provider).load().await;
let client = Client::new(&shared_config);

According to the error there are multiple initializations of the aws_types crate being exported and seem to be conflicting. I have seen this type of error when the compiler does not know which version to use and dies. Perhaps aws_config from the examples is no longer needed?
Note, this still fails too.
let shared_config: aws_sdk_secretsmanager::Config = aws_sdk_secretsmanager::Config::builder().build();
let client: aws_sdk_secretsmanager::Client = Client::new(&shared_config);

with message
expected struct `aws_types::config::Config`, found struct `aws_sdk_secretsmanager::Config`
Note: expected reference `&aws_types::config::Config` found reference `&aws_sdk_secretsmanager::Config`

The docs inside the crate also fail:
let shared_config = aws_config::load_from_env().await;
let built_config = aws_sdk_secretsmanager::config::Builder::from(&shared_config).build();
let client = aws_sdk_secretsmanager::Client::from_conf(built_config);

with message
the trait bound `aws_sdk_secretsmanager::config::Builder: std::convert::From<&aws_config::Config>` is not satisfied
E0277 the trait `std::convert::From<&aws_config::Config>` is not implemented for `aws_sdk_secretsmanager::config::Builder` Help: the following implementations were found: <aws_sdk_secretsmanager::config::Builder as std::convert::From<&aws_types::config::Config>>

Version
aws-sdk-secretsmanager = "0.7"
aws-config = "0.8"
Platform
Ubuntu 20.04
AWS Services
aws secret manager
aws config
Description
Aws client initialization failure
Logs
No response

Ah, it seems there needs to be some updating/syncing done to how types are exported and shared from crates. There exists a conflict between the aws_config and other sdk crates. When the crate versions match, the error resolves.

Yeah, that's correct, the crate versions always need to match. Once we have moved to 1.0 it will be less of an issue as the minor versions will be considered compatible by Cargo.


First draft at tracking blow-up factor.

We take blow-up factor to be the number of additional jobs in a
task chain after the jobs in the first task.  The latter steps in
the task chain should affect what is acquired for work now - esp
as the blow-up factor may be >100 in the cases of LHE.
This approach is not foolproof, I think.  WQE's already in WMBS
may only count the jobs currently in WMBS still.  If nothing else,
this will slow the acquisition of such workflows to the point where
they are load-balanced across agents.  Not clear that it would
prevent an agent from taking on too much work if it's a single-agent
team.

There is one point that we need to carefully review here before merging which is the elements acquisition. If we have elements with a very big number of jobs (>25k, I foresee cases close to 100k), then it's possible that all the pending thresholds (including a queue_factor) won't give enough slots and so, the element will starve in GQ.

The logic in availableWork is such that it will acquire new WQE's until after it goes over.  It doesn't care if it goes over by a lot or a little.
So, if there's a WQE with 100k estimated jobs, a site with 99 pending jobs, and a limit of 100 pending jobs, it will acquire the WQE.

test this please

@bbockelm please fix the suggested "Pre-python 2.6 idioms" and this pylint
"Line 12 W0611 Unused CouchMonitor imported from WMCore.Database.CMSCouch"
message. Since it's one line change, you can squash all your changes in a single commit.

After some exhausting test, this is the summary:
a) there are some minor fixes (blowUp calculation & jobCount calculation)
b) this works for basically a single WQ cycle (but in practice it takes ~2 cycles - 20min), mainly during WQE negotiation. After the WQ has splitted and created subscriptions, the amount of slots taken goes to the standard value (considering only Jobs from WQE instead of * blowupFactor).
It won't solve this issue, but should at least make it much less annoying in our production agents.
I'm cooking an update patch and will make a PR later on.

Yeah - that's where things get sticky!  It'll help spread out the workflow amongst several agents, but fundamentally too-big workflows will still get digested.
Do you think it would be possible to track the blow-up factor for the Jobs (i.e., once it's hit WMBS)?  That looked much more difficult.

Possible it is :D, I just can't measure how much work it would take (maybe a new column in wmbs and etc ...).

In case you want to take a look
https://github.com/amaltaro/WMCore/commit/a9802d2c15bc8068f6346fd99cb651f05025fd7b
should be final version, I hope.

So, thinking over this, it seems tracking the blowup may just be a ton of work.  I have an idea of three simpler things we can do instead:

Refactor the way we count jobs per site (https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/WorkQueue/WorkQueueBackend.py#L373).  Right now, if a work queue element has 500 jobs, the site has 99 jobs, and the site has a threshold of 100 jobs, then after the for-loop, the site will have 599 jobs.

Instead, we should add 1 job to the site and try to find locations for the 499.  We accept the block as long as at least 1 job was accepted (guaranteeing forward progress).  However, it is far less likely to overshoot its target by thousands of jobs (currently, it will take 1 WQE per iteration per site below-threshold).
Won't solve the current deficiency, but mitigate it.  Workflows with big blowup factors and big whitelists will pull down much slower on busy agents.

Have a threshold for the number of jobs per agent in WMBS (all states, including cleanout); once this threshold is reached, stopped pulling work.  Based on experience, the threshold is somewhere around 1M for CERN agents and 500k for FNAL agents.
Do something about the cleanout state.  Either get rid of jobs quicker or try a partition.

The latter two will help with all big workflows, regardless of whether they suffer from issues with blowup factors.

Comments about your three points:

Sounds a good idea not to over-acquire work. However, WQE would be pulled all the time for > smaller sites since they would have a job or two finishing all the time. So it's not clear it would be that helpful.
Don't agree! We should not block data acquisition based on work done on that agent and waiting to be archived. Actually, we want to move the other way for quite a long time, which is getting rid of of the thresholds (tasks), so more thresholds will just over-complicate and give us trouble when debugging issues.

These are not simple changes and cannot be done today (for February CMSWEB). I'd suggest proceeding with the patch we've been working and validating and check how helpful it will be in real life.
IF it does not mitigate these issues, then we discuss and improve it again based on your comments.
@ericvaandering @ticoann what do you think?

Since #6542 was merged, I'm closing this one.
Further discussion can be followed in https://github.com/dmwm/WMCore/issues/6544


Files is crashing...

Description
The moment you try to pin a file to the start menu, the app crashes. I try it multiple times but it kept crashing...
Steps To Reproduce

You find a file that you want to pin.
You right-click it and then click on more options.
After that click on 'Pin to start menu'
Then it crashes.

Requirements
I'm not entirely sure what to put in here, but I'll try my best:
Fix crash that occurs when you try to pin some file to the start menu.
Files Version
<IP_ADDRESS>
Windows Version
10.0.22631.2861
Log File
debug.log
Thanks for developing this, I love the project!

Thanks for the feedback, We're tracking this in #13947. You can check there or click subscribe in the right sidebar for updates.


Update README.md with testing documentation

Changes
This was meant to be included in #769, but I forgot to push the change.
Tests

[ ] make test passing
[ ] make fmt applied
[ ] relevant integration tests applied

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (a0de560) 18.29% compared to head (ef03547) 18.29%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #770   +/-   ##
=======================================
  Coverage   18.29%   18.29%
=======================================
  Files         110      110
  Lines       14821    14821
=======================================
  Hits         2711     2711
  Misses      11888    11888
  Partials      222      222

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add missing systemctl step for running cri-o

After installing cri-o, we must run systemctl daemon-reload before
trying to run systemctl start crio. Otherwise, systemd doesn't know
about the crio configuration.
Similar instructions already exist for installing docker - this diff
adds these instructions for crio.

/assign @steveperry-53
thanks :)

/lgtm
/approve


Parsing error on Basic auth

The Postman schema for authorizations is an array of:
{
  key: string,
  value: any,
  type: string
}

By default, a Postman v2.1 export will include, in the Basic auth key-value pairs, an entry for showPassword that has a boolean value.  This breaks under the current deserialization scheme.

Could you please share an export of postman which fails at de-serialization for basic-auth? Also if type is string, shouldn't the value be of type string ?

The code block above was referring to types, not values.  The value property could be any valid JSON value, while key and type will be strings.
Here's an exported Basic Auth example: https://gist.github.com/kevinswiber/252eccbe557b0bb76ecdaa15db31660c

Here's the auth object:
{
  "type": "basic",
  "basic": [
    {
      "key": "username",
      "value": "postman",
      "type": "string"
    },
    {
      "key": "password",
      "value": "password",
      "type": "string"
    },
    {
      "key": "showPassword",
      "value": false,
      "type": "boolean"
    }
  ]
}

Got it, thanks, although not sure why my postman export doesn't show showPassword field in the export.


verify code algorithm

Coverage decreased (-3.6%) to 96.429% when pulling 711a4658b20ba763fa1899cbbfc2c2b56882ba42 on mvlbarcelos:feature/verify-code-algorithm into ce045945af1d2bbd803ba86c37262c9db0bfa708 on bluesoft:develop.

Coverage decreased (-3.6%) to 96.429% when pulling 6810e6baf2980df8d02b8358a1325b3becabcf6c on mvlbarcelos:feature/verify-code-algorithm into ce045945af1d2bbd803ba86c37262c9db0bfa708 on bluesoft:develop.


Discussion: App submission form

Hello! I'm opening this issue so we can discuss the possible addition of an in-site form for people to add their app to the grid.
I'll open another issue to discuss the contents of the form (#367), this thread is for discussing the following approach (and other new approaches as they appear 😌).
When a user submits a new app through the form, it would invoke a lambda function (perhaps in cloudflare), that would create a new commit with the form information.
Now, this commit can go one of two ways:

it could be a commit to master, with an 'approved' variable set as false. The reason for this is so that forestry.io reviewers can see preview and edit/fix it easier, before setting 'approve' to true or just deleting it.  Still, committing directly to master could lead to a lot of problems 😅 (and with many submissions, de forestry environment can also become hard to navigate 🤔).
the commit would be in a new branch which is used for a PR to master. This is safer but the review process would become exclusive to Github, so Forestry only editors would be forced to review it in a much less comfortable way (unless we add a 'no-content' review step so that someone else can just check the validity of the change and merge it with the false 'approved' flag. Forestry editors can look at the content itself later, but this seems like a hassle 😅)

Once again all new ideas are welcome 🙏

@autonome , please @ anybody you think might want to intervene 😊

@andrew, you might be the most relevant person to give some feedback on this one.

@Ricardo-Silva91 both options seem to have some significant drawbacks, I'd suggest sticking closer to GitHub reviews to avoid extra complexity and dependencies on extra systems.

I don't think we have a need for "friendly" (non-GH) means of approving requests - but we would benefit from a way of submitting them that doesn't require the submitter to make a code PR (aka a web form). @autonome, can you confirm? Am I missing something here? Thanks!

I defer to @jessicaschilling. If we need non-GH approval, we can layer on later.

Thinking that option 2 above is the best way to go. AFAIK the purpose of this exercise is to give folks who aren't so GitHub-savvy (or who just don't want a GH account - say, a project's PR person) the ability to add a project to Awesome IPFS. Anyone on the core team end who's likely to be evaluating and approving a submission will already be pretty heavily into our GitHub ecosystem, so I don't see a need for Forestry-only editors for this site.
That said - generating a staging link for the result of a Forestry-submitted PR would be extremely useful. That way, an approver doesn't need to bring down the PR and build locally in order to make sure it looks OK visually. But that can just be part of the overall CI for the site.
Sound good to everyone?

Quick note for @Ricardo-Silva91: Please note that this repo's README.md also includes a list of all the apps/articles/etc that appear on the Awesome IFPS website. Please make sure that your form workflow accounts for updating that list, too. 😊

Closing this in an effort to reboot this list while keeping the maintainer overhead as low as possible while still making sure the list is awesome!
See https://github.com/ipfs/awesome-ipfs/pull/478 for more info


⚠ Samsung has degraded performance

In ecd07f9, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2733 ms

Resolved: Samsung performance has improved in 72860b1.


Collaborate on jetcd

At the end of the readme there is a what-about-jetcd, as one of the contributor and maintainer of the jetcd project I'd love to see if we can work together on a single client.

Hey @lburgazzoli, thanks for reaching out... that would be great! I don't have a huge amount of time right now but maybe we could at least start a discussion with ideas on what might make sense w.r.t convergence, and begin to move in that direction?

I don't have much time either so if we can spend our limited time working on a single client, then it would be great for everyone I think :)
Something I had in mind was:

replace grpc-java with vertx-grpc for a reactive story
focus on core functionalities and move things such as cluster management in dedicated client extension


is not a valid scheme

exception: "InfluxDB\Client\Exception"
file: "/var/www/clients/client1/web18/web/vendor/influxdb/influxdb-php/src/InfluxDB/Client.php"
line: 284
message: " is not a valid scheme"
Time works otherwise...

php artisan config:clear
My environment variables were null

php artisan config:clear
My environment variables were null


Thanks

Er I hope this is the right place, thanks for all the work on the MVVM toolkit and the document below. It says 'Submit new issue' so please let me know if this is not the correct place for feedback (I clicked on the feedback button on the document).

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 63d6b162-0bd6-d8ce-ba45-a1d30c3162eb
Version Independent ID: 63d6b162-0bd6-d8ce-ba45-a1d30c3162eb
Content: MVVM Toolkit warning MVVMTK0032 - .NET Community Toolkit
Content Source: docs/mvvm/generators/errors/MVVMTK0032.md
Product: dotnet-communitytoolkit
GitHub Login: @Sergio0694
Microsoft Alias: joverslu

Thank you!! 😄


CoPilot Edits - needs more granular display of changes like in CoPilot Chat

When using the new CoPilot Edits feature (great feature BTW), there are a couple of suggested refinements:

I'd like to be able to see the edits in the file in line as we do with the CoPilot Chat when we ask it to incorporate the changes into the file. It highlights each area with a Accept/Discard/Show changes choice above each. It would be nice to have this with Edits.

I'd suggest keeping the global Accept All Changes as you have it now, as sometimes you know you want to accept them all after glancing over them.
Currently, I have to click the icon to compare the files side by side which is slow and a bit clunky when the previously mentioned method works very well.

Can you just drop the whole Edits screen and go back to using the chat interface, but have a toggle between the "Edits" behavior, and the Chat behavior? I don't like how I lose all my previous questions in the Edits screen, when I often need to grab that, copy/paste it again, revise it etc. I often scroll back up and find things from before, grab chunks of code that were listed out, etc. Actually, I just like the Chat screen format much better than just breaking out the Edits behavior.

It seems to me that we programmers toggle between asking for a piece of code and the explanation of a concept from one second to the next so changing contexts from Edits to Chat is a pain.
I REALLY like how fast the Edits incorporates the changes as opposed to how the Chat screen laboriously lists out the whole file, chunk of code, etc.
Good work! Keep it up! Thanks for listening.

"Currently, I have to click the icon to compare the files side by side which is slow and a bit clunky when the previously mentioned method works very well."
Let me rephrase: Currently, if I want to review all the changes before trusting coPilot, who has screwed me over many times in the past, LOL, I have to click the icon to compare the files side by side which is slow and a bit clunky when the previously mentioned method works very well.


Uea dev

small refinement for dictionary based classifiers. Previously, if series length was less than min_length (default 10), no classifiers were built and they failed on predict(). Now a ValueError is raised in fit()

adds a check to dictionary classifiers to make sure min_window is admissible for a given problem

adds a check to dictionary classifiers to make sure min_window is admissible for a given problem


fixed createTicket REST call

Codecov Report

Merging #38 into master will increase coverage by 5.67%.
The diff coverage is 0%.

@@            Coverage Diff             @@
##           master      #38      +/-   ##
==========================================
+ Coverage   23.16%   28.83%   +5.67%
==========================================
  Files          39       41       +2
  Lines         993     1148     +155
  Branches      133      181      +48
==========================================
+ Hits          230      331     +101
- Misses        689      728      +39
- Partials       74       89      +15

Impacted Files
Coverage Δ

...min-web-app/src/components/Project/TicketCreate.js
0% <0%> (ø)
:arrow_up:

admin-web-app/src/components/shared/auth.js
0% <0%> (ø)
:arrow_up:

user-app/src/components/Login/login.js
31.57% <0%> (-1.76%)
:arrow_down:

user-app/App.js
100% <0%> (ø)
:arrow_up:

user-app/src/components/Projects/joinProject.js
0% <0%> (ø)
:arrow_up:

user-app/src/components/secondScreen.js
25% <0%> (ø)

user-app/src/components/Projects/projects.js
0% <0%> (ø)

user-app/src/components/Login/auth.js
16.21% <0%> (+1.93%)
:arrow_up:

...main/java/de/fau/cs/osr/amos/asepart/Database.java
61.73% <0%> (+7.45%)
:arrow_up:

Continue to review full report at Codecov.

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


iOS. Implement NativeParagraphIntrinsics.native.kt

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


An unhandled exception of type 'System.OverflowException' occurred in Word2Vec.Net.dll

Hi,
Exception in InitVocub():
M = new float[words * size];
Looks like words and size reading incorrect.

May be it happens cause you use not binary file.


How to set tx power maximum for bladeRF x40?

Hi all,
I am using this project. I measured the output power with the value is -10dBm. how do i increase it?
I adjusted parameters: set txvga1 -4 and set txvga2 25 (limit)
Typical +6dBm TX power of bladeRF x40
Regards,
hakou123

Hello hakou123, I am just starting with the bladeRF x40, and I am investigating how many dBm the blade x40 outputs at the same power levels you mentioned. Could you help me understand how you obtained the measurement? Thank you very much, regards.


HDDS-3432. Enable TestBlockDeletion test cases.

What changes were proposed in this pull request?
Enable block deletion test
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-3432
How was this patch tested?
Fixes UT

Workflow succeeded 20 iterations for TestBlockDeletion.
https://github.com/lokeshj1703/hadoop-ozone/runs/3027753468?check_suite_focus=true

@adoroszlai Thanks for the review! I have committed the PR to master branch.


Removed unneeded coupling

Q
A

Bug fix?
yes

New feature?
no

BC breaks?
no

Deprecations?
no

As far as I know and have tested, there is no need for this config definition. But it causes problems in my application. I need to make a call in the config, for a method on my app product repository. Something like this.
sylius.repository.product:
        calls:
            - ['methodToCall']]

The problem with the current parent attribute is that it makes a requirement for BitBag's product repository class to have this same method.
So put it simple: I want to call a method on my app product repository, but I get an error message saying it requires BitBag's repository to have a similar method.

Fixed :-)

Thanks!


Staging

@tonynguyen111997  Is everything that you want to push into master ready to go on staging?

Let me add the style branding real quick to the README.md before we merge into master


If a directory is created under a directory, it cannot be deleted.

Bug Report
System Information

Ubuntu 20.04 LTS
AMP Release "Lapetus" v<IP_ADDRESS>, built 01/05/2020 17:15
Mainline

I confirm:

[x] that I have searched for an existing bug report for this issue.
[x] that I am using the latest available version of AMP.
[x] that my operating system is up-to-date.

Symptoms

If a directory is created under a directory, it cannot be deleted.
When I created the /TEST/TEST2 directory, I was able to delete the TEST, but I was unable to delete the TEST2.
Reproduction

https://www.youtube.com/watch?v=8Hvn2j-N5aU

Please confirm if this still applies to <IP_ADDRESS>.

@PhonicUK this is still a bug in v<IP_ADDRESS> AMP cant find the path to the DIR but placing a file inside the DIR deleting that file after and then deleting the DIR will work.

I can confirm this bug is still present in <IP_ADDRESS>.  On Windows in the case of the logs below, but I have seen this on both Linux and Windows.
In my case, I had removed a branch from my Github.  After deleting and fetching latest in AMP, the directory and its KVPs were still being listed in instance creation.
I attempted to delete the directory via the ADS01 file manager, but it stated that part of the path could not be found.  I uploaded a file to that directory, then deleted the file, and then I was able to delete that directory.
The ADS01 logs did not capture the error, but you can see the successful delete after I uploaded a text file.
[18:39:25] [ADS:admin Info]       : Updating remote source Dragoon209/AMPDrafts:factorio [18:39:25] [ADS:admin Info]       : Updating existing remote source https://github.com/Dragoon209/AMPDrafts.git... From https://github.com/Dragoon209/AMPDrafts    3f0397b..db94cbc  main       -> origin/main Already up to date. [19:28:58] [GSMyAdmin:admin Activity] : Changing setting ADSModule.ADSSettings.ConfigurationRepositories to ["CubeCoders/AMPTemplates","Dragoon209/AMPDrafts"] [19:29:08] [ADS:admin Info]       : Updating remote source CubeCoders/AMPTemplates [19:29:08] [ADS:admin Info]       : Updating existing remote source https://github.com/CubeCoders/AMPTemplates.git... Already up to date. [19:29:08] [ADS:admin Info]       : Updating remote source Dragoon209/AMPDrafts [19:29:08] [ADS:admin Info]       : Updating existing remote source https://github.com/Dragoon209/AMPDrafts.git... Already up to date. [19:32:55] [FileManager:admin Activity] : Trashed file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/solacecrafting.kvp [19:32:59] [FileManager:admin Activity] : Trashed file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/solacecraftingconfig.json [19:33:04] [FileManager:admin Activity] : Trashed file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/solacecraftingmetaconfig.json [19:33:08] [FileManager:admin Activity] : Trashed file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/solacecraftingservercfg.dat [19:33:19] [ADS:admin Info]       : Updating remote source CubeCoders/AMPTemplates [19:33:19] [ADS:admin Info]       : Updating existing remote source https://github.com/CubeCoders/AMPTemplates.git... Already up to date. [19:33:20] [ADS:admin Info]       : Updating remote source Dragoon209/AMPDrafts [19:33:20] [ADS:admin Info]       : Updating existing remote source https://github.com/Dragoon209/AMPDrafts.git... Already up to date. [19:38:12] [FileManager Activity] : Began upload of file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/sample1.txt (607 B, Direct mode) [19:38:12] [FileManager Activity] : Completed upload of file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/sample1.txt in 00:00:00 (∞ PB/s) [19:38:21] [FileManager:admin Activity] : Trashed file __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio/sample1.txt [19:38:30] [FileManager:admin Activity] : Trashed directory __VDS__ADS01/Plugins/ADSModule/DeploymentTemplates/Dragoon209-AMPDrafts-factorio

This was fixed in a recent update.


Filtering overloaded methods

I have this little change over here:
https://github.com/ansoni-san/winrt-go/commit/7d9c02ba980233cadc1c4a2075cb31b67d9e9d5f
To allow filtering out specific method overloads. I needed it to partially implement pairing without pulling in a heap of things I didn't want.
Is it worth raising as a pull request?
It basically changes the shouldImplement method to check the overloadName for a filter match as well. Both the overloadName and the original interface name (methodDef.Name) must be accepted for the method to be implemented. Since the default behavior is to accept a method that has no matches, this only has the effect of allowing negative matches on the overload name to take effect.
Nothing currently implemented in this project changed as a result, but it allowed me to get pairing working on Windows.

What if we only use the overload method name?
Go doesn't support overloading and I think it makes more sense to make each -method-filter point to a single generated Go method.
It's a really easy value to find, and the change in the code is even simpler.
@aberasarte, @glerchundi I added #76 with the change. PTAL 🙏.

Much more explicit so I prefer that way.

@ansoni-san I'm merging the PR and closing this issue. Feel free to reopen it if the solution does not satisfy your needs.
Also feel free to make a PR with any method or class you require.

Yeah that makes sense.
I can't see the behavior of including all permutations of a method as desirable, given that there's a need to minimize unnecessary surface area and unused code in this module.
I would have preferred this behavior. I kept wishing it worked like this while trying to stop the whole world being pulled in from a few simple additions 😄🤔👌🏽
Given Microsoft's liberal use of overloading, better to be explicit. It would also guard against new things being pulled in automatically when they add things in the future.


Where to register google maps API events listener?

Where should I register maps API event listeners? I tried to add a listener to click event in mounted hooks but the component's map` property is evaluated to null at this point in a component's lifecycle. Thank you.

The way I do it, is to assign the reference to the map to a watch composition API, adding listener to it after the referenced map is ready.

The way I do it, is to assign the reference to the map to a watch composition API, adding listener to it after the referenced map is ready.

Reopening the issue because somehow this solution does not always work.

Any update on this?

Hey @prasetyaputraa sorry about the late response. There's a ready ref which you can use. @JoseGoncalves shared an example of how he's using it to register event listeners a while back:
https://github.com/inocan-group/vue3-google-map/issues/1#issuecomment-718229226
If this method doesn't work for you or if you have any feedback on ways to improve the API please let me know.

Hi @prasetyaputraa, you can also check the following usage demo: vue-google-maps

@HusamIbrahim @JoseGoncalves Sorry, I wonder why did I miss it while browsing the issues. Thank you so much!


Campaigns API index endpoint doesn't contain meta.pagination

BUG
Current Behavior
GET campaigns doesn't contain a meta object, as the Signups and Reportbacks do. (introduced in #6223)

Desired Behavior
Consistent response per other endpoints:

Currently not using pagination object in iOS yet, not sure about Android -- @jonuy ?

Yea, the Android implementation does use pagination on /campaigns. Making a change on that right now would break the screen with the list of campaigns by cause.
Two potential ways forward:

Make the change to update the API response right now before v1.1 gets published to the Play Store. I'll need to upload a new v1.1.1 or something apk, but this will avoid us causing users' apps to break if they don't choose to download an update.

Version the change and release it as part of an api v2.

I think I'd prefer to add a meta.pagination property to the response and keep the old root-level pagination and retrieved_count included for compatibility. Since it's not a public API, we can always just monitor usage of older app bundles and remove down the line without making a formal v2.


(bug):EyeOpenProbability and smilingProbability Is null?

I have some Func need smilingProbability and EyeOpenProbability
I have print this null value.

So I have check need turn on
enableClassification: true

@Conezi please review this


Update OOPSLA24

Which conference does this PR update?

OOPSLA 2024

Related URL

https://2024.splashcon.org/track/splash-2024-oopsla#Call-for-Papers
https://oopsla24.hotcrp.com/deadlines

I have fixed the typo and rebase the repo, please check again


⚠ ClamAV has degraded performance

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

HTTP code: 200
Response time: 450 ms

Resolved: ClamAV performance has improved in 71ee66a.


SRV service discovery support

Support SRV queries (used by Consul DNS, etc.) so that DNS can return IP/port combinations.
SRV is not supported by getaddrinfo_a so need to integrate with DNS library to make the query directly.

Note, a PR was started in https://github.com/lyft/envoy/pull/517 but it looks like it's not going to get finished. If anyone wants to pick it up please chime in here. cc @0x1997

Any update on this?
The new service discovery feature on AWS ECS make use of SRV records. If envoy would support this, this would greatly simplify the use of envoy on ECS, no need no manage a consul cluster anymore.
Thanks :)!

Any update on this?
The new service discovery feature on AWS ECS make use of SRV records. If envoy would support this, this would greatly simplify the use of envoy on ECS, no need no manage a consul cluster anymore.
Thanks :)!

What did you use alternative?

@ludov04 @ChrisLahaye I'd also be interested to know!

/assign @venilnoronha

I think this was supposed to be in 1.11.0 release.
1.11.1 just got released and it looks like this has been pushed to 1.12.0.

Is there any progress on this?

I actually did some digging and looks like a library c-ares is used for dns resolution and looking at it they do support SRV records. Unless I'm missing something.

@twreid could you please let me know when you find a solution. We would also like to use envoy with SRV-based service discovery.

I'm also looking into using SRV for service discovery with envoy.

Same here, I need ip/port (SRV records) from Consul. Thanks!

Any particular reason you want to use SRV records for that?
Don't get me wrong, I definitely want to see support for SRV records myself, but Consul and Envoy have a native integration already, so I'm wondering what your reason is for not using that.
‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday, 30 November 2020 18:43, Martin<EMAIL_ADDRESS>wrote:

Same here, I need ip/port (SRV records) from Consul. Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Just because I think I'll be able to get the records on SRV (and non-Consul services) before I can get the necesary changes in my Consul agent for the whole sidecar thing needed ... :)

For me the main reason is because my company would rather pay AWS for infrastructure than spin up a consul cluster and AWS service discovery uses SRV records.

I'm considering working on this, but I'm trying to get a bearing on what the desired direction is at this point.  From poring over #517, #6379, #1477, #1835, #4290, #5186, #10361 and the code itself, it seems like the desire is to make the custom resolver interface asynchronous and then possibly hook the current dns resolver into it so that EDS clusters can use dns resolution. Am I reading that correctly? If so, do you still want to keep the custom resolver interface coupled to the dispatcher and use continuation passing/callbacks to achieve async?
The previous discussions seem to point to adding SRV support as a custom resolver once async resolvers are implemented.  But I have these thoughts and questions about it:

If I'm reading correctly, the idea was that SRV resolution would be engaged if SrvResolver was specified as the resolver in an Address message or the url was configured like this: tcp://hostname.example.com:srv. However, since SRV records begin with an underscore and  A, AAAA, and CNAME records can't begin with an underscore, I kind of like just triggering SRV if the hostname begins with an underscore or SrvResolver is specified as a custom resolver. What do you think?

I think config.endpoint.v3.LbEndpoint should also have a priority field added to map to a SRV priority and it could work the same way as a locality priority. What do you think?

Should SRV priority and weight override configured priority and weight specified on a config.endpoint.v3.LbEndpoint? My opinion is that config should take precedence since someone setting those fields with a SRV address is probably doing it on purpose and wants to override SRV.

There has been discussion about moving port handling into the dns interface, but the clusters still have to construct Host objects.  Would it make it easier on the clusters for resolvers to just return Host objects directly?  Maybe make a distinction between Address resolvers and ClusterLoadAssignment resolvers?

#14310 talks about making DNS resolvers an extension.  How does that affect the custom resolver interface and SRV resolution?  I'm concerned since I'll be working in my spare time and probably won't be very fast if there is overlap.

No rush, I know the project is on break.

I need to spend some time and page all of this back in. I will get back to you next week some time. I would like to see this one happen. Thank you for your interest!

@kylebevans I'm trying to approach this from first principles since this issue has been opened for so long and so many changes have taken place over the years. Here are my general thoughts:

Given that SRV records start with '_' and other records don't, it seems reasonable to do SRV resolution in that case. Stepping back though, I'm wondering if we don't need to worry about this at all? Meaning, at the DNS level, if we ask c-ares to do a resolution, can we potentially have a different callback if the returned record(s) happen to be SRV records? Would that be simpler?
At this point static_dns already uses LocalityLbEndpoint style configuration. Could we actually just implement SRV resolution directly in the existing static_dns cluster? Meaning, if we happen to get SRV records we handle them, if we don't, we just do what we do today?
Do SRV records always return host names vs. IP addresses? Meaning, there will always be a double resolution involved? If so, it might not be worth it to use static_dns. At this point we allow custom cluster types. Would it be better to implement a new extension cluster called srv_dns that is loosely based on static_dns but is custom built for SRV and then also handles the double resolution?

I think config.endpoint.v3.LbEndpoint should also have a priority field added to map to a SRV priority and it could work the same way as a locality priority. What do you think?

I think this would be a pretty big change and I'm not sure it's worth it right now. Can we skip supporting priority in SRV until someone actually needs it? I'm not sure how commonly used it is. If we do end up needing it, I think the way to handle it would still be at the locality level, where we basically create localities for each distinct priority returned in the record set. This might be another data point in favor of a custom cluster type which could eventually do this.

Should SRV priority and weight override configured priority and weight specified on a config.endpoint.v3.LbEndpoint? My opinion is that config should take precedence since someone setting those fields with a SRV address is probably doing it on purpose and wants to override SRV.

Modulo skipping priority in the MVP I agree.

There has been discussion about moving port handling into the dns interface, but the clusters still have to construct Host objects. Would it make it easier on the clusters for resolvers to just return Host objects directly? Maybe make a distinction between Address resolvers and ClusterLoadAssignment resolvers?

Per above, I think what I would recommend is having the DNS interface just expose a new interface for getting SRV responses?

#14310 talks about making DNS resolvers an extension. How does that affect the custom resolver interface and SRV resolution? I'm concerned since I'll be working in my spare time and probably won't be very fast if there is overlap.

My quick take on this is that I don't think we should implement SRV as an extension resolver. I think it could probably just be built into the main resolver interface and implemented using c-ares?
Excited to see this worked on. I think I would recommend a small gdoc with a final proposed design that we can work through once you have looked through things some more? Thank you!

@kylebevans I'm trying to approach this from first principles since this issue has been opened for so long and so many changes have taken place over the years. Here are my general thoughts:

Given that SRV records start with '_' and other records don't, it seems reasonable to do SRV resolution in that case. Stepping back though, I'm wondering if we don't need to worry about this at all? Meaning, at the DNS level, if we ask c-ares to do a resolution, can we potentially have a different callback if the returned record(s) happen to be SRV records? Would that be simpler?
At this point static_dns already uses LocalityLbEndpoint style configuration. Could we actually just implement SRV resolution directly in the existing static_dns cluster? Meaning, if we happen to get SRV records we handle them, if we don't, we just do what we do today?
Do SRV records always return host names vs. IP addresses? Meaning, there will always be a double resolution involved? If so, it might not be worth it to use static_dns. At this point we allow custom cluster types. Would it be better to implement a new extension cluster called srv_dns that is loosely based on static_dns but is custom built for SRV and then also handles the double resolution?

I think config.endpoint.v3.LbEndpoint should also have a priority field added to map to a SRV priority and it could work the same way as a locality priority. What do you think?

I think this would be a pretty big change and I'm not sure it's worth it right now. Can we skip supporting priority in SRV until someone actually needs it? I'm not sure how commonly used it is. If we do end up needing it, I think the way to handle it would still be at the locality level, where we basically create localities for each distinct priority returned in the record set. This might be another data point in favor of a custom cluster type which could eventually do this.

Should SRV priority and weight override configured priority and weight specified on a config.endpoint.v3.LbEndpoint? My opinion is that config should take precedence since someone setting those fields with a SRV address is probably doing it on purpose and wants to override SRV.

Modulo skipping priority in the MVP I agree.

There has been discussion about moving port handling into the dns interface, but the clusters still have to construct Host objects. Would it make it easier on the clusters for resolvers to just return Host objects directly? Maybe make a distinction between Address resolvers and ClusterLoadAssignment resolvers?

Per above, I think what I would recommend is having the DNS interface just expose a new interface for getting SRV responses?

#14310 talks about making DNS resolvers an extension. How does that affect the custom resolver interface and SRV resolution? I'm concerned since I'll be working in my spare time and probably won't be very fast if there is overlap.

My quick take on this is that I don't think we should implement SRV as an extension resolver. I think it could probably just be built into the main resolver interface and implemented using c-ares?
Excited to see this worked on. I think I would recommend a small gdoc with a final proposed design that we can work through once you have looked through things some more? Thank you!

For 1 & 2, extending the existing dns resolver interface was the direction taken in venilnoronha's PR at #6379.  During code review, a few things came up that seemed to pivot it to using the custom resolver interface instead:

the strict_dns and logical_dns clusters have to "know about" SRV and require changes in order to call resolve on SRV records and receive/process SRV responses.  This is where keying off of underscore would come into play.

htuch expressed a desire to have the clusters agnostic to SRV, and recommended implementing SRV as a custom resolver to achieve that. I believe in this case, to use SRV you would have to use an EDS cluster.

Using a custom resolver also brings up another issue: the custom resolver interface is currently synchronous.  There is an open issue to make it asynchronous that would be a prerequisite for implementing SRV as a custom resolver. It could still use c-ares under the hood.

I'm not 100% sure, but I think extending the existing dns resolver interface and also keeping the clusters agnostic is still possible.  We could change the dns resolver interface to provide a data structure that would support either SRV or a regular dns request.  Right now it provides a list of DnsResponses which the clusters use to create a HostVector.  Inside a DnsResponse, only an address and TTL are supported which won't work for SRV.
So to sum up the big decisions:

Do you want the clusters to be agnostic to SRV?
If yes, do you want to achieve that by using the custom resolver interface or by changing the dns resolver interface to support SRV and regular dns with the same data structure?
If not, then we can use the existing dns resolver interface and change the clusters to use SRV if the hostname begins with an underscore.

Moving on to the other points:

The RFC says it must return address records, but I did just try to create a SRV record with IP addresses in a Windows DNS server and it worked.  I think we should plan on SRV returning either address records or IP addresses.  I think in the normal case, it will return address records and a double resolution will be necessary.

Sounds good to me.

Nice

I think I originally suggested this as a way to achieve agnostic clusters, so it depends on 1 & 2.

I would be happy to create a google doc. Do you already have a Google organization that you keep these kind of docs in? If so, could you create the doc and invite me as an editor? The reason I ask is that Google won't allow moving a doc from one org to another, so if I create it myself then it will forever be separate from your other docs, which has happened to me in the past.  If that's not an issue then I will just create the doc.

For 1 & 2, extending the existing dns resolver interface was the direction taken in venilnoronha's PR at #6379.  During code review, a few things came up that seemed to pivot it to using the custom resolver interface instead:

the strict_dns and logical_dns clusters have to "know about" SRV and require changes in order to call resolve on SRV records and receive/process SRV responses.  This is where keying off of underscore would come into play.

htuch expressed a desire to have the clusters agnostic to SRV, and recommended implementing SRV as a custom resolver to achieve that. I believe in this case, to use SRV you would have to use an EDS cluster.

Using a custom resolver also brings up another issue: the custom resolver interface is currently synchronous.  There is an open issue to make it asynchronous that would be a prerequisite for implementing SRV as a custom resolver. It could still use c-ares under the hood.

I'm not 100% sure, but I think extending the existing dns resolver interface and also keeping the clusters agnostic is still possible.  We could change the dns resolver interface to provide a data structure that would support either SRV or a regular dns request.  Right now it provides a list of DnsResponses which the clusters use to create a HostVector.  Inside a DnsResponse, only an address and TTL are supported which won't work for SRV.
So to sum up the big decisions:

Do you want the clusters to be agnostic to SRV?
If yes, do you want to achieve that by using the custom resolver interface or by changing the dns resolver interface to support SRV and regular dns with the same data structure?
If not, then we can use the existing dns resolver interface and change the clusters to use SRV if the hostname begins with an underscore.

Moving on to the other points:

The RFC says it must return address records, but I did just try to create a SRV record with IP addresses in a Windows DNS server and it worked.  I think we should plan on SRV returning either address records or IP addresses.  I think in the normal case, it will return address records and a double resolution will be necessary.

Sounds good to me.

Nice

I think I originally suggested this as a way to achieve agnostic clusters, so it depends on 1 & 2.

I would be happy to create a google doc. Do you already have a Google organization that you keep these kind of docs in? If so, could you create the doc and invite me as an editor? The reason I ask is that Google won't allow moving a doc from one org to another, so if I create it myself then it will forever be separate from your other docs, which has happened to me in the past.  If that's not an issue then I will just create the doc.

At this point I think here is my rough thinking:

Add SRV support to the existing resolver. For simplicity I think it's probably fine to have an API resolveSRV() which is independent from the other resolution API. We can potentially merge them later if needed.
Given this discussion, my feeling is that we should add a new extension cluster called srv_dns. We can factor out code from static_dns and share it if we want, but I think there are enough differences that it should be independent. My thought on how this cluster would work is it should assume that the cluster load assignment is empty, and have its own configuration for an SRV name (or maybe a list of names). Given the response, we could eventually synthesize a CLA with multiple localities (using priority), but in the beginning for the MVP we could have a single locality and just adhere to the weight field. I don't think we need to use the EDS code at all.

I think ^ is pretty straightforward and should get us to where we need to be. I honestly haven't gone back through all the old issues and discussions but given the extension points we have today this makes the most sense to me. In terms of writing up a more fully formed version of this in a gdoc, we don't currently have a hosted drive (we probably should), so for now a doc from your account that is world commentable would be great. Thank you!

At this point I think here is my rough thinking:

Add SRV support to the existing resolver. For simplicity I think it's probably fine to have an API resolveSRV() which is independent from the other resolution API. We can potentially merge them later if needed.
Given this discussion, my feeling is that we should add a new extension cluster called srv_dns. We can factor out code from static_dns and share it if we want, but I think there are enough differences that it should be independent. My thought on how this cluster would work is it should assume that the cluster load assignment is empty, and have its own configuration for an SRV name (or maybe a list of names). Given the response, we could eventually synthesize a CLA with multiple localities (using priority), but in the beginning for the MVP we could have a single locality and just adhere to the weight field. I don't think we need to use the EDS code at all.

I think ^ is pretty straightforward and should get us to where we need to be. I honestly haven't gone back through all the old issues and discussions but given the extension points we have today this makes the most sense to me. In terms of writing up a more fully formed version of this in a gdoc, we don't currently have a hosted drive (we probably should), so for now a doc from your account that is world commentable would be great. Thank you!

This makes sense to me.  I'll start on the doc, thanks.

This makes sense to me.  I'll start on the doc, thanks.

Hi, here is the design doc: https://docs.google.com/document/d/11yEE9qk_xr8bvdQLPdEuzBM9LpuXRUseNgQIf4y20E0/edit?usp=sharing
I'll await your feedback, but again there is no rush.

Hi, here is the design doc: https://docs.google.com/document/d/11yEE9qk_xr8bvdQLPdEuzBM9LpuXRUseNgQIf4y20E0/edit?usp=sharing
I'll await your feedback, but again there is no rush.

Thanks @kylebevans. Very exciting to see this being worked on. I left some comments on the doc but it definitely looks like it's heading in the right direction!

Thanks @kylebevans. Very exciting to see this being worked on. I left some comments on the doc but it definitely looks like it's heading in the right direction!

@kylebevans Hey Kyle, we're currently looking at using Envoy for internal routing which requires adding SRV record support in Envoy. I'm wondering how far have you gone in terms of implementation? I'm also happy to work with you to get a working PR started.

@mattklein123 It seems like part of the current implementation is to add a new cluster for resolving SRV DNS query. We're currently trying to use Dynamic Forward Proxy filter and would love to use SRV query as well for resolving upstream addresses. It doesn't seem like this issue will fully address this feature request as DFP filter uses its own custom cluster instead.
Does it make sense to create a new custom cluster that resolves SRV query and can cache the results? What's your take in terms of implementation?

In https://github.com/envoyproxy/envoy/issues/125#issuecomment-753748255 I suggest a 2 part change. Part 1 is adding SRV support to the resolver. This part could be configured/used from the DFP code.

Hi everybody,
I'm making slow, but steady progress, and thanks for being patient.  Part of this is synthesizing a cluster load assignment from SRV that I'm hoping will make it easier for other clusters to use, but it looks like DFP doesn't use a CLA.  Like Matt said though, the resolver will support SRV lookups.  I'm also working with the c-ares team to support getting the TTL from a SRV lookup, and I have an open PR there that this is kind of dependent on.

@kylebevans is there any progress on this one? we at SoundCloud are considering envoy and use SRV for service discovery. We already contributed some code for SRV SD to linkerd 1.x and would be happy to help out / provide feedback if needed

I started a new job in May, and I confess I haven't had a lot of time to work on this.  I was kind of stuck on the part where I need to convert the resolve API from returning a raw pointer to an ActiveDnsQuery to using a unique_ptr.  Changing that means carefully thinking through the lifetime, but it also means the changes are going to affect all DNS queries and not just SRV queries which is scary.  I'm pretty sure I know what needs to be done at this point, but it will take a lot of thinking and care.
I'll try to block out some time soon to work on it. I am still committed to finishing it.

thanks @kylebevans, please keep us posted :)

Anything in particular needing help with this?? Would be very handy for our platform framework.

Hi everyone, I searched through the Envoy documentation and also found this open issue. From what I understand, Envoy's DNS resolution currently does not support SRV resolution, is that right?
I also came across an interesting DNS filter that is currently under development. According to the documentation for the DNS filter, it allows us to configure SRV records. My question is: will these configured SRV records be used solely as fake DNS records for internal use?

Hi everybody,
Based, on the design doc and the great job done by @kylebevans, I've opened #35160.
Basically, it introduces a new type of cluster (which is configured by an SRV record).
I would appreciate if someone can provide some feedback and guide to the following steps


Make classnames warnings warn once

Follow https://github.com/styled-components/styled-components/issues/2159#issuecomment-433746372

I did it with Set/className in the some way it did in React
https://github.com/facebook/react/blob/6938dcaacbffb901df27782b7821836961a5b68d/packages/react-reconciler/src/ReactFiberClassComponent.js#L748

@probablyup this._reactInternalFiber.type is always identical instance of models/StyledComponent. So, I have found another solution - to use this.props.forwardedClass.target.


When some npm module import is blocked by ad-blocker, the vite dev server crashes without any error message

Describe the bug
When the vite dev server tries to import a node module, and it's blocked by an ad-blocker in browser, the app crashes with a blank screen, which is hard to debug. Some warning messages will be helpful.
This should be rare, because ad-blockers are usually off on localhost by default, unless you manually turn it on.
Reproduction
There are many ways to reproduce, here's one example:

In your vite project, add firebase v9 for the sake of getting google analytics:

$ npm i firebase@^9

Add one line in your code:

import { getAnalytics } from "firebase/analytics";

Install the chrome extension uBlock Original, which is the most famous open source ad-blocker with 10+ million users.
Run you dev server. Things should be ok now.
Click the chrome extension icon and turn it ON.
Reload and you'll get the black screen.

System Info
System:
    OS: Windows 10 10.0.19043
    CPU: (8) x64 Intel(R) Core(TM) i7-8550U CPU @ 1.80GHz
    Memory: 5.39 GB / 15.89 GB
  Binaries:
    Node: 14.17.5 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.5 - ~\scoop\apps\yarn\current\Yarn\bin\yarn.CMD
    npm: 6.14.14 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 92.0.4515.159
    Edge: Spartan (44.19041.1023.0), Chromium (92.0.902.84)
    Internet Explorer: 11.0.19041.906
  npmPackages:
    vite: ^2.5.1 => 2.5.1

Used Package Manager
yarn
Logs
No response
Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guidelines.
[X] Read the docs.
[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] Make sure this is a Vite issue and not a framework-specific issue. For example, if it's a Vue SFC related bug, it should likely be reported to https://github.com/vuejs/vue-next instead.
[X] Check that this is a concrete bug. For Q&A open a GitHub Discussion or join our Discord Chat Server.
[X] The provided reproduction is a minimal reproducible example of the bug.

This is a wontfix. You can use a separate Chrome profile with extensions turned off during development.

The point of this issue report is not about the ad blocker, it's the white screen without any error message.
(My original post had a typo, it should've been "blank screen", not "black screen", I have fixed it. But anyways, what I meant was a white screen.)


double or decimal dataType should not be set as DICTIONARY_EXCLUDE

when we create table, set double or decimal dataType column as  DICTIONARY_EXCLUDE
create table carbontable(id int, name string, dept string, mobile array<string>, country string, salary double) STORED BY 'org.apache.carbondata.format'
the system should throw exception, and create table failed

@sujith71955 @eason-lyx  pls check

retest this please

LGTM


Update priority based execution java docs

Updating java docs for priority based throttling config to specify it's a preview feature and steps to opt in to it.

API change check
API changes are not detected in this pull request.


Delete the legacy course provisioning folder

Description
This PR deletes the legacy course provisioning folder, as superseded by the tenant controller and no longer working with the new template API. The documentation about the folder itself will be completed by #378

/rebase

/rebase

/merge

/merge


Migration of ElasticSearch plugin

We need to add the ES plugin in the OSS.

@vinaykumarchella do you have an idea when this plugin will be available?
Thanks

@toff63 We did not prioritize it yet but should be an easy one, I can get it out next week. If you have it already, please feel free to send a PR.

@vinaykumarchella next week would be great. I don't have the plugin ready for PR. As I am about to perform some perf testing on Elasticsearch, I was wondering if I should consider using ndbench for that or not.


Sometimes Elegit tells you that you need to merge before you push when you actually don't

I think it's fixed with 5769641dc0d59ff04a3478d7d7603341bca47fd5. Haven't seen it at least...


Tesla New API can't login // Vehicle Offline

Describe the bug
With the 'new' Tesla API, a login is not possible in Version 0.124.0
Steps to reproduce

Update Config to "template: tesla-command"

Get new Access/Refreshtokens using https://tesla.evcc.io/

Update Config with new Tokens

Restart EVCC

Cars marked as offline, Logfile says: "cannot create vehicle type 'template': cannot create vehicle type 'tesla-command': oauth2: "login_required" "Login required""
...

Configuration details
vehicles:
- type: template
  template: tesla-command
  title: Tesla1
  accessToken: ***
  refreshToken: ***
  vin: **
  capacity: 77
  name: ev1
  mode: pv
  priority: 10

Log details
cannot create vehicle type 'template': cannot create vehicle type 'tesla-command': oauth2: "login_required" "Login required"

What type of operating system are you running?
Linux / Home-Assistant Plugin
Version
0.124.0

Did you create the new tokens using https://tesla.evcc.io/ or how did you create the tokens?

yes, i create new tokens using https://tesla.evcc.io. The tokens are working for 1 time after restart or disconnect the vehicle the tokens doesn't work and the errormessage appears.

Make sure the pasted Tesla tokens are correct. If yes share your full config with<EMAIL_ADDRESS>for analysis.


Article incorrectly states peered virtual networks must be in the same region

Multiple times in this article, it states that peered virtual networks must be in the same region.  This is no longer the case and should be corrected.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b8fa2fdc-9c03-df0f-90fa-ff0cf11a70f8
Version Independent ID: b9106c83-dadd-4518-3fea-803e59b8e61c
Content: Configure and validate virtual network or VPN connections
Content Source: articles/virtual-network/virtual-network-configure-vnet-connections.md
Service: virtual-network
GitHub Login: @v-miegge
Microsoft Alias: kaushika

@larryclaman, Thanks for reaching out. We will investigate and update this thread.

@larryclaman, Appreciate your patience. The doc has been edited accordingly and it would take some time for the changes to get reflect over the doc.
We are closing this issue for now. If there are further questions regarding this matter, please reply and we will gladly continue the discussion.


Fix create expense form when clicking reimbursement link in balances page

Upon clicking "Mark as Paid" in the group balances tab, this redirects to the create expense page with argument "reimbursement".
The value for splitMode is not set in this instance so the UI renders the "shares" controls
To fix, explicitly set splitMode: 'EVENLY' for the reimbursement scenario.

🙌


Object keys starting with $ are treated differently

{
	$a: true,
	b: true,
	_c: true,
}

The $a is differently colored than the two following.

I think this just started with a recent update. It applies to variables too, not just keys. Variables like angular's $scope used to be yellow like the rest of them, and now are white. I'm in the process of trying to revert my version of JSNext because this is super confusing.


Prepare re-genesis

We decided for a short epoch time of 10 minutes in the begining of the testnet which wasn't a problem until now.
Since multiple validators were concerned that this might lead to unnecessary kicking from the validator set and losing nominations if the node is offline for 10 minutes, and also if no blocks were produced for those 10 minutes, the chain could stall like Kusama did before.
This could result in the need to do a time-warp and coordination effort of all of the validators. We were trying to decide the best way forward as it's unfortunately not possible to just change this setting after the start of the network.
The current best way forward is re-genesis
We'll need to prepare a script to migrate all of the data to fresh genesis in the following order.
PHASE 1:

[x] Release and upgrade chain to 4.0.0 + #190 (4.0.1) @jak-pan
[x] Prepare re-geneis scraping script probably by modifying fork-off #192

PHASE 2:

[x] Change epoch to 4 hours #186
[x] Update protocolId #192
[ ] Store genesis and last block of the gen1 in the gen2 #192
[ ] Update Polkadot-js/common #195 🥇 STUCK
[ ] Update chain_spec and node to connect to the new chain
[x] Test the upgrade with new epoch time and old validators - validators need to set new keys
[x] Add #183

PHASE 3:

[ ] Kill the gen1 and re-generate genesis with latest data paritytech/substrate#7458
[ ] Release 5.0.0
[ ] Coordinate upgrade with validators
[ ] Start gen2

PHASE X (Anytime):

[x] ~Check if it's possible to keep block data and change epoch retroactively during re-genesis~
[x] ~Check if it's possible to do migration https://github.com/paritytech/substrate/pull/8491#pullrequestreview-624108828~
This won't be possible - See comments below

About the chicken and egg: https://github.com/paritytech/substrate/issues/7458#issuecomment-811998002
I think you want to stop the chain and accept the blackout.

About the chicken and egg: paritytech/substrate#7458 (comment)
I think you want to stop the chain and accept the blackout.

We're probably going with soft killing the original chain by disallowing any action on it (basically a call filter with almost everything set to false), forking it and waiting for the upgrade of the extension, then we'll hard kill it with setCode and switch to new one.


Huge templates are loaded fully into RAM

Describe the bug
cargo-generate loads templates into RAM instead of disk. If a template takes up 16GB and you're on a machine with 16GB of RAM, it'll lock up your machine. This can happen if the template has large assets, or if you use a local template with --path that has a target/ directory with many GBs of build artifacts.
make sure you

[X] I'm on the latest rust version rustup update
[X] I'm on the latest cargo-generate version cargo install cargo-generate
[X] In case you have an own .gitconfig, provide all sections that contains one of: insteadOf, url

To Reproduce
Steps to reproduce the behavior:

cargo generate --path to/template/with/large/target/dir/
My memory usage goes way up

Expected behavior
Template gets cloned to disk instead of memory.
It would be nice if ignore = ["target"] meant that the target dir doesn't get copied in the first place, but I imagine that's non-trivial with git clone.
Desktop (please complete the following information):

OS: Arch Linux
Version: 6.10.10-arch1-1
Build tools: gcc and clang I guess?
Shell: zsh
rustc --version: rustc 1.83.0-nightly (04a318787 2024-09-15)
cargo generate --version: cargo generate-generate 0.22.0

I'm stunned, do you have an example repo that causes this to happen?

So the "large assets" case was hypothetical, but I ran into this with the target dir case while working on a PR to a template that will allow its main branch to be both a cargo-generate template and actually runnable via cargo run.
The PR for that template is still a WIP, but there is a simpler template that can be used as an example:

Clone https://github.com/TheBevyFlock/bevy_new
Run cargo build to populate the target dir (3.7 GB on my machine)
Run cargo generate --path to/bevy_new while monitoring memory usage


Whatsapp Integration follow ups [6h]

Follows up on #292 and https://github.com/Gizra/ihangane/issues/3050

Photos do not appear in the whatsapp image:

Patient photo at patient details pane.
Photos pane at ANC report.

The problem: html2canvas loads photos, by issuing fetch requests to image urls.
On our APP however, we have SW layer that catches photos fetch requests and maps the urls to photos locations at device cache, where real images are stored. html2canvas can't use SW, and therefore, it can't get the images.

The screenshot we send can be quite large (over 1MB), as the report is long. The images that are being received at WhatsApp message are small (~70KB), which results in poor image quality.

@adamhstewart please advice how we should handle point 1.

@adamhstewart

Photos do not appear in the whatsapp image:

The images are served directly from cache, and I did not find an easy solution that can work with html2canvas.
I suggest checking the necessity of images at sent screenshot. Considering the resolution, I don't think you can see much at ANC report anyway, and photo at details page does not seem mandatory.
If images are must, we may need to search for another utility to take screenshots'.

The screenshot we send can be quite large (over 1MB), as the report is long. The images that are being received at WhatsApp message are small (~70KB), which results in poor image quality.

Seems to me that with Twilio, resolution is better even though images size is still small.
I think we better get some feedbacks from site before we try making improvements (which will required Twillio support).

@adamhstewart
Made few more attempts today of service pictures to html2canvas.
For the context, device stores images in cache. Service worker intercepts the requests, and serves images from device cache, instead of sending the request to back-end.
Service worker runs on browser, and we have no ability to make use of it in non web world (where html2canvas operates).
Therefore, html2canvas requests are sent to back-end (if device is connected to internet).
Even if there's internet, since there's no authentication, the response if HTTP 403.
BTW, the case where you saw screenshots with images happens if you're running while logged in on back-end, since you're already authenticated and have access to images.
The conclusion still remains the same - If images are must, we need to search for another utility to take screenshots.


Support position reader of OSS, COS and S3

What changes are proposed in this pull request?
Support Position Reader of Aliyun OSS and Tencent COS, and Update position reader of AWS S3.
Add abstract class of ObjectPositionReader, and let S3APositionReader, OSSPositionReader and COSPositionReader extend it.
Why are the changes needed?
The original code lacked support for OSS and COS position reader, and this PR can support them.
Does this PR introduce any user facing changes?
No

@JiamingMai @LuQQiu Please review this PR. Thanks :)

alluxio-bot, merge this please


Log Heroku request IDs all the way through rendering

With a little luck, this will make it easier to trace what’s going on for any one render when we need to debug.
Also adjust logfmt params so we get response info and user-agent.

          1 Warning

:warning:
Please provide a linked tracker story for this PR in the description

  Generated by :no_entry_sign: danger


Redirect or provide modal on gogetta.nyc and gogett.nyc/find to use YourPeer

Let's encourage users to click into YourPeer - not turning GoGetta off till we have a way for specialists to see a preview of Yourpeer content, but not wanting service-seeking users on their FE.
Please design a pop-up for the homepage and map page that we can implement asap

This is one we want to get done after the current refactor @jbeard4


fix: fix quota error log

this change reduces log noise - originally, when there were no quotas the code was logging an error. Having no quotas is not an error so move to debug


Bumping version from 0.2.0 to 0.3.0 due to breaking API change.

The API was changed in: #143, #141.

I don't think any of this is breaking (i.e., user code from before this version will not work in this version)?  Best to keep it a patch release (v0.2.1) then

I don't think any of this is breaking (i.e., user code from before this version will not work in this version)?  Best to keep it a patch release (v0.2.1) then

Yes, I agree, this isn't breaking (I initially thought some signature was also changed). Will change the version to 0.2.1.

Codecov Report

Merging #158 (78a1668) into main (1f52cd2) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #158   +/-   ##
=======================================
  Coverage   91.88%   91.88%
=======================================
  Files          20       20
  Lines         456      456
=======================================
  Hits          419      419
  Misses         37       37

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Fix a bug in jk cuda kernel

Remove is_skip calls in CUDA kernels.
Remove log_q_ij and log_q_kl in offset

Does this modification also remove the integral screening?

Does this modification also remove the integral screening?

@sunqm The integral screening at bin level is still effective. Only the integral screening in the general CUDA kernel is removed. I feel the previous experiment is not enough. Let us re-evaluate the strategy later.


handle corrupt images

Adds error handling for corrupted images/"truncated pngs"

this looks pretty good https://github.com/msamogh/nonechucks

yep that's way better and works with any type of dataset. implementing that instead @lucidrains - good find.

this is out of scope for this issue i.e. i'm being lazy, but the "Transforms as Filters" thing would be perfect for multilingual datasets. hopefully we can get a cool little pipeline out of it later on.


How do you use that?

https://what2ban.web.app/ is online but i'm not sure how I can use it

You have to enter the player's Dota 2 ID, you can try it using the given ID in the help button.

Ooh yep got it!
Unfortunately it's a bit tedious to get every player ID to know what to ban but the idea is very nice!