Separate state transition validation from nonState transition valdations

Fixes #12037
Status
READY
Description
SUPERSEDES: https://github.com/dmwm/WMCore/pull/12146 && https://github.com/dmwm/WMCore/pull/12148
With the current change we allow SiteLists related actions for statuses: staging, acquired, running-open in ReqMgr2
Before making a call to central services for changing any of the request parameters, an additional step is executed to
to check which are the allowed parameter modifications for the given status and if the so provided new values from the rest call actually differ from the workflow parameters already defined in central couchdb.
With the current change we no longer ignore all the rest of the request arguments provided with the REST call in the cases of a change of the Request priority. See: https://github.com/dmwm/WMCore/issues/8457#issuecomment-366195086
The current change is also meant to address the issue with vanishing parameters during assignment of ACDC workflows as explained here: https://github.com/dmwm/WMCore/issues/12037#issuecomment-2377660795. Even though, the issue would have manifested itself for regular workflows as well, if they were to experience any parameter change in a state transition from assignment-approved  to assigned. Currently this process is taken by Unified (and I believe no parameter change was happening during this, so automated, step) and the only manual intervention we perform at this state transition was  for ACDC ... ,hence why we noticed the misbehavior with an ACDC  workflow.
With the current PR we  suggest a separate logic in the validation function between state and non-state transition workflow updates.
Is it backward compatible (if not, which system it affects?)
YES
Related PRs
This PR provides a cherry-pick of 3 pull requests that have been recently reverted. Changes have been originally provided by:
https://github.com/dmwm/WMCore/pull/12077
https://github.com/dmwm/WMCore/pull/12108
https://github.com/dmwm/WMCore/pull/12111
External dependencies / deployment changes
No

@todor-ivanov I am trying to organize WM central services upgrade and I need to know how this validation is progressing and when you think you can finish it? If you think it can still take a few days, then we might actually revert the 2 changes that went in and give you the time you need to validate this.

@amaltaro  I am pretty sure I will not be able to finish this before mid next week.

hi gain @amaltaro , and here are the results for an artificially created  ACDC:
This is the workflow: https://cmsweb-test1.cern.ch/reqmgr2/fetch?rid=tivanov_ACDC_TaskChain_LumiMask_multiRun_SiteListsTest_v6_241018_134936_9617

The workflow is  properly transferred from: new to assignment-parroved`
If I try to change any parameter without a change of the status from  assignment-approved then I get this error:

[18/Oct/2024:13:56:41]  SERVER REST ERROR WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue 5e296467497b0a2f6e4069a199ef7e28 (Invalid spec parameter value: There were unhandled arguments left for no-status update: ['TrustSitelists', 'TrustPUSitelists', 'CustodialSites', 'NonCustodialSites'])
[18/Oct/2024:13:56:41]    Traceback (most recent call last):
[18/Oct/2024:13:56:41]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 749, in default
[18/Oct/2024:13:56:41]        return self._call(RESTArgs(list(args), kwargs))
[18/Oct/2024:13:56:41]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 832, in _call
[18/Oct/2024:13:56:41]        obj = apiobj['call'](*safe.args, **safe.kwargs)
[18/Oct/2024:13:56:41]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 559, in put
[18/Oct/2024:13:56:41]        result = self._updateRequest(workload, request_args)
[18/Oct/2024:13:56:41]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 537, in _updateRequest
[18/Oct/2024:13:56:41]        report = self._handleNoStatusUpdate(workload, request_args, dn)
[18/Oct/2024:13:56:41]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 446, in _handleNoStatusUpdate
[18/Oct/2024:13:56:41]        raise InvalidSpecParameterValue(msg)
[18/Oct/2024:13:56:41]    WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue: InvalidSpecParameterValue 5e296467497b0a2f6e4069a199ef7e28 [HTTP 400, APP 1102, MSG "Invalid spec parameter value: There were unhandled arguments left for no-status update: ['TrustSitelists', 'TrustPUSitelists', 'CustodialSites', 'NonCustodialSites']", INFO None, ERR None]

Which is kind of expected, since in the assignment-approved map of allowed arguments we do have a big set, which we indeed do not suport as a NON-STATUS_UPDATE arguments, but we support them in combination with a status update.

If I move the workflow from assignemnt-aproved to assigned together with the change of site whitelist or priority or anything else, it all goes smoothly.

@amaltaro
I did yet another test. With and without the patch from this PR applied:

Without this patch the workflow update is completely broken as you report it.
With this patch the workflow update proceeds only under the combination of change of parameters together with the state transition from assignment-approved to assigned

Which means we end up here:
https://github.com/dmwm/WMCore/blob/7a5d1f77cd7f26732e7260c549024d262f881871/src/python/WMCore/ReqMgr/Service/Request.py#L543
instead of here:
https://github.com/dmwm/WMCore/blob/7a5d1f77cd7f26732e7260c549024d262f881871/src/python/WMCore/ReqMgr/Service/Request.py#L537
So which means we may need to either repeat the actions from _handleAssignementStateTransiotion in _handleNoStateTransition or we stop treating the state transition and non-state transition  arguments differently so we  unify those _handle*  auxiliary methods as I already suggested  here:   https://github.com/dmwm/WMCore/pull/12099#discussion_r1766476657
Quote:

Of course, if you ask me - I am completely up for moving the whole logic to be implemented here in a more generic way .... for all status updates, then get rid of a big chunk of code covering custom cases ... and only make the proper calls to this generic method here from upstream modules (e.g. Request in the current case)

What do you think?

BTW, up until now we did not feel the difference for workflow parameter change with and without state update from assignment-approved (which I am explaining in my previous comment) only because we were completely ignoring anything but RequestPriority for _handleNosStatusUpdate calls. So we were not failing the call (as we correctly do now) if we do not handle properly the arguments provided, but just ignoring anything that  the user sent to us..... So what I'd say here is that the correct behavior is exposed.... the question is what would we do to fix it. And the two possible paths I can see I listed in my comment above. We need to choose one of those paths.
@amaltaro  any ideas?

Ok @amaltaro , I tested a really nasty workaround, following the path for calling _handleAssingmentApprovedStateTransition actions from the _handleNonStateTranstion call. This works. I'll provide the workaround in my next commit, but I must stress -  I really do not like this approach.
Here are the logs from:

Transforming some arguments of an ACDC workflow in assignment-approved status, without actually moving it to assigned

[21/Oct/2024:12:35:26] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS>:54180 "GET /reqmgr2/data/request?status=assigned&detail=True HTTP/1.1" 200 OK [data: 1652 in 9632 out 35882 us ] [auth: ok ***]
[21/Oct/2024:12:35:29] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS> "GET /reqmgr2/data/info HTTP/1.1" 200 OK [data: 296 in 668 out 28878 us ] [auth: OK "" "" ] [ref: "" "Go-http-client/1.1" ]
[21/Oct/2024:12:35:46]  Updating request "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621" with these user-provided args: {'RequestPriority': 200000, 'Team': 'testbed-vocms0290', 'SiteWhitelist': '', 'SiteBlacklist': ['T1_DE_KIT', 'T1_ES_PIC', 'T1_FR_CCIN2P3', 'T1_IT_CNAF', 'T1_UK_RAL', 'T2_BE_IIHE', 'T2_BE_UCL'], 'AcquisitionEra': {'myTask1': 'RunIISummer20UL16wmLHEGENAPV', 'myTask2': 'RunIISummer20UL16SIMAPV', 'myTask3': 'RunIISummer20UL16DIGIPremixAPV', 'myTask4': 'RunIISummer20UL16HLTAPV', 'myTask5': 'RunIISummer20UL16RECOAPV', 'myTask6': 'RunIISummer20UL16MiniAODAPV'}, 'ProcessingString': {'myTask1': 'myTask1_TaskChain_Prod_SiteListsTest_v6', 'myTask2': 'myTask2_TaskChain_Prod_SiteListsTest_v6', 'myTask3': 'myTask3_TaskChain_Prod_SiteListsTest_v6', 'myTask4': 'myTask4_TaskChain_Prod_SiteListsTest_v6', 'myTask5': 'myTask5_TaskChain_Prod_SiteListsTest_v6', 'myTask6': 'myTask6_TaskChain_Prod_SiteListsTest_v6'}, 'ProcessingVersion': {'myTask1': 11, 'myTask2': 12, 'myTask3': 13, 'myTask4': 14, 'myTask5': 15, 'myTask6': 16}, 'Dashboard': 'production', 'MergedLFNBase': '/store/backfill/1', 'TrustSitelists': 'False', 'UnmergedLFNBase': '/store/unmerged', 'MinMergeSize':<PHONE_NUMBER>, 'MaxMergeSize':<PHONE_NUMBER>, 'MaxMergeEvents': 100000000, 'BlockCloseMaxWaitTime': 66400, 'BlockCloseMaxFiles': 500, 'BlockCloseMaxEvents': 25000000, 'BlockCloseMaxSize':<PHONE_NUMBER>000, 'SoftTimeout': 129600, 'GracePeriod': 300, 'TrustPUSitelists': 'True', 'CustodialSites': '', 'NonCustodialSites': '', 'Override': {'eos-lfn-prefix': 'root://eoscms.cern.ch//eos/cms/store/logs/prod/recent/PRODUCTION'}, 'SubscriptionPriority': 'Low'}
[21/Oct/2024:12:35:46]  Updated priority of "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621" to: 200000
[21/Oct/2024:12:35:46]  Unhandled argument for no-status update: Team
[21/Oct/2024:12:35:46]  Updated SiteWhitelist of "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621", with:
[21/Oct/2024:12:35:46]  Updated SiteBlacklist of "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621", with:  ['T1_DE_KIT', 'T1_ES_PIC', 'T1_FR_CCIN2P3', 'T1_IT_CNAF', 'T1_UK_RAL', 'T2_BE_IIHE', 'T2_BE_UCL']
[21/Oct/2024:12:35:46]  Unhandled argument for no-status update: TrustPUSitelists
[21/Oct/2024:12:35:46]  CurrentRequest status: assignment-approved
[21/Oct/2024:12:35:46]  Handling assignment-approved arguments differently!
[21/Oct/2024:12:35:46]  Assign request tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621, input args: {'RequestPriority': 200000, 'Team': 'testbed-vocms0290', 'SiteWhitelist': '', 'SiteBlacklist': ['T1_DE_KIT', 'T1_ES_PIC', 'T1_FR_CCIN2P3', 'T1_IT_CNAF', 'T1_UK_RAL', 'T2_BE_IIHE', 'T2_BE_UCL'], 'TrustPUSitelists': 'True'} ...
[21/Oct/2024:12:35:46] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS>:35786 "PUT /reqmgr2/data/request/tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621 HTTP/1.1" 200 OK [data: 3598 in 110 out 455516 us ] [auth: ok ***]

Transitioning the same workflow from assignment-approved to assigned with again few arguments changed:

[21/Oct/2024:12:40:36] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS>:20730 "GET /reqmgr2/data/wmagentconfig/vocms0290.cern.ch HTTP/1.1" 200 OK [data: 1567 in 306 out 16027 us ] [auth: ok "/DC=ch/DC=cern/OU=Organic Units/OU=Users/CN=cmst1/CN=718748/CN=Robot: cms t1" "" ] [ref: "https://cmsweb-test1.cern.ch" "WMCore.Services.Requests/v002" ]
[21/Oct/2024:12:40:55]  Updating request "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621" with these user-provided args: {'RequestStatus': 'assigned', 'RequestPriority': 200000, 'Team': 'testbed-vocms0290', 'SiteWhitelist': ['T1_US_FNAL', 'T2_CH_CERN'], 'SiteBlacklist': '', 'AcquisitionEra': {'myTask1': 'RunIISummer20UL16wmLHEGENAPV', 'myTask2': 'RunIISummer20UL16SIMAPV', 'myTask3': 'RunIISummer20UL16DIGIPremixAPV', 'myTask4': 'RunIISummer20UL16HLTAPV', 'myTask5': 'RunIISummer20UL16RECOAPV', 'myTask6': 'RunIISummer20UL16MiniAODAPV'}, 'ProcessingString': {'myTask1': 'myTask1_TaskChain_Prod_SiteListsTest_v6', 'myTask2': 'myTask2_TaskChain_Prod_SiteListsTest_v6', 'myTask3': 'myTask3_TaskChain_Prod_SiteListsTest_v6', 'myTask4': 'myTask4_TaskChain_Prod_SiteListsTest_v6', 'myTask5': 'myTask5_TaskChain_Prod_SiteListsTest_v6', 'myTask6': 'myTask6_TaskChain_Prod_SiteListsTest_v6'}, 'ProcessingVersion': {'myTask1': 11, 'myTask2': 12, 'myTask3': 13, 'myTask4': 14, 'myTask5': 15, 'myTask6': 16}, 'Dashboard': 'production', 'MergedLFNBase': '/store/backfill/1', 'TrustSitelists': 'False', 'UnmergedLFNBase': '/store/unmerged', 'MinMergeSize':<PHONE_NUMBER>, 'MaxMergeSize':<PHONE_NUMBER>, 'MaxMergeEvents': 100000000, 'BlockCloseMaxWaitTime': 66400, 'BlockCloseMaxFiles': 500, 'BlockCloseMaxEvents': 25000000, 'BlockCloseMaxSize':<PHONE_NUMBER>000, 'SoftTimeout': 129600, 'GracePeriod': 300, 'TrustPUSitelists': 'True', 'CustodialSites': '', 'NonCustodialSites': '', 'Override': {'eos-lfn-prefix': 'root://eoscms.cern.ch//eos/cms/store/logs/prod/recent/PRODUCTION'}, 'SubscriptionPriority': 'Low'}
[21/Oct/2024:12:40:55]  Assign request tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621, input args: {'RequestStatus': 'assigned', 'RequestPriority': 200000, 'Team': 'testbed-vocms0290', 'SiteWhitelist': ['T1_US_FNAL', 'T2_CH_CERN'], 'SiteBlacklist': [], 'AcquisitionEra': {'myTask1': 'RunIISummer20UL16wmLHEGENAPV', 'myTask2': 'RunIISummer20UL16SIMAPV', 'myTask3': 'RunIISummer20UL16DIGIPremixAPV', 'myTask4': 'RunIISummer20UL16HLTAPV', 'myTask5': 'RunIISummer20UL16RECOAPV', 'myTask6': 'RunIISummer20UL16MiniAODAPV'}, 'ProcessingString': {'myTask1': 'myTask1_TaskChain_Prod_SiteListsTest_v6', 'myTask2': 'myTask2_TaskChain_Prod_SiteListsTest_v6', 'myTask3': 'myTask3_TaskChain_Prod_SiteListsTest_v6', 'myTask4': 'myTask4_TaskChain_Prod_SiteListsTest_v6', 'myTask5': 'myTask5_TaskChain_Prod_SiteListsTest_v6', 'myTask6': 'myTask6_TaskChain_Prod_SiteListsTest_v6'}, 'ProcessingVersion': {'myTask1': 11, 'myTask2': 12, 'myTask3': 13, 'myTask4': 14, 'myTask5': 15, 'myTask6': 16}, 'Dashboard': 'production', 'MergedLFNBase': '/store/backfill/1', 'TrustSitelists': False, 'UnmergedLFNBase': '/store/unmerged', 'MinMergeSize':<PHONE_NUMBER>, 'MaxMergeSize':<PHONE_NUMBER>, 'MaxMergeEvents': 100000000, 'BlockCloseMaxWaitTime': 66400, 'BlockCloseMaxFiles': 500, 'BlockCloseMaxEvents': 25000000, 'BlockCloseMaxSize':<PHONE_NUMBER>000, 'SoftTimeout': 129600, 'GracePeriod': 300, 'TrustPUSitelists': True, 'CustodialSites': [], 'NonCustodialSites': [], 'Override': {'eos-lfn-prefix': 'root://eoscms.cern.ch//eos/cms/store/logs/prod/recent/PRODUCTION'}, 'SubscriptionPriority': 'Low', 'HardTimeout': 129900} ...
[21/Oct/2024:12:40:56] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS>:59098 "PUT /reqmgr2/data/request/tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621 HTTP/1.1" 200 OK [data: 3561 in 110 out 236476 us ] [auth: ok

There is a side effect, though, Besides the fact that we get into to spiral of calls within calls of methods which could be aligned sequentially and only skip the irrelevant ones.... but anyway. The side effect I am speaking is actually something I think I've seen in the past, which is - Once you update any of the request parameters in the web interface while the ACDC is in assignment-approved but you do not update the status to assigned the web interface looses the the default values for Team and SiteWhiteList and you need to beware not to hit the button Submit without checking those, because otherwise you'll end up with the following error:
[21/Oct/2024:12:40:30]  Updating request "tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621" with these user-provided args: {'RequestStatus': 'assigned', 'RequestPriority': 200000, 'Team': '', 'SiteWhitelist': ['T1_US_FNAL', 'T2_CH_CERN'], 'SiteBlacklist': '', 'AcquisitionEra': {'myTask1': 'RunIISummer20UL16wmLHEGENAPV', 'myTask2': 'RunIISummer20UL16SIMAPV', 'myTask3': 'RunIISummer20UL16DIGIPremixAPV', 'myTask4': 'RunIISummer20UL16HLTAPV', 'myTask5': 'RunIISummer20UL16RECOAPV', 'myTask6': 'RunIISummer20UL16MiniAODAPV'}, 'ProcessingString': {'myTask1': 'myTask1_TaskChain_Prod_SiteListsTest_v6', 'myTask2': 'myTask2_TaskChain_Prod_SiteListsTest_v6', 'myTask3': 'myTask3_TaskChain_Prod_SiteListsTest_v6', 'myTask4': 'myTask4_TaskChain_Prod_SiteListsTest_v6', 'myTask5': 'myTask5_TaskChain_Prod_SiteListsTest_v6', 'myTask6': 'myTask6_TaskChain_Prod_SiteListsTest_v6'}, 'ProcessingVersion': {'myTask1': 11, 'myTask2': 12, 'myTask3': 13, 'myTask4': 14, 'myTask5': 15, 'myTask6': 16}, 'Dashboard': 'production', 'MergedLFNBase': '/store/backfill/1', 'TrustSitelists': 'False', 'UnmergedLFNBase': '/store/unmerged', 'MinMergeSize':<PHONE_NUMBER>, 'MaxMergeSize':<PHONE_NUMBER>, 'MaxMergeEvents': 100000000, 'BlockCloseMaxWaitTime': 66400, 'BlockCloseMaxFiles': 500, 'BlockCloseMaxEvents': 25000000, 'BlockCloseMaxSize':<PHONE_NUMBER>000, 'SoftTimeout': 129600, 'GracePeriod': 300, 'TrustPUSitelists': 'True', 'CustodialSites': '', 'NonCustodialSites': '', 'Override': {'eos-lfn-prefix': 'root://eoscms.cern.ch//eos/cms/store/logs/prod/recent/PRODUCTION'}, 'SubscriptionPriority': 'Low'}
[21/Oct/2024:12:40:30]  Error: Traceback (most recent call last):
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 189, in validate
    self._validateRequestBase(param, safe, validate_request_update_args, requestName)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 101, in _validateRequestBase
    workload, r_args = valFunc(args, self.config, self.reqmgr_db_service, param)
  File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Utils/Validation.py", line 102, in validate_request_update_args
    workload.validateArgumentForAssignment(request_args)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkload.py", line 1945, in validateArgumentForAssignment
    validateArgumentsUpdate(schema, argumentDefinition)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py", line 293, in validateArgumentsUpdate
    _validateArgumentOptions(arguments, argumentDefinition, "assign_optional")
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py", line 160, in _validateArgumentOptions
    arguments[arg] = _validateArgument(arg, arguments[arg], argDef)
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py", line 101, in _validateArgument
    _validateArgFunction(argument, value, argumentDefinition["validate"])
  File "/usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py", line 133, in _validateArgFunction
    raise WMSpecFactoryException(msg)
WMCore.WMSpec.WMSpecErrors.WMSpecFactoryException: <@========== WMException Start ==========@>
Exception Class: WMSpecFactoryException
Message: Argument 'Team' with value '', doesn't pass the validate function.
It's definition is:
                              "validate": lambda x: len(x) > 0},

	ClassName : None
	ModuleName : WMCore.WMSpec.WMWorkloadTools
	MethodName : _validateArgFunction
	ClassInstance : None
	FileName : /usr/local/lib/python3.8/site-packages/WMCore/WMSpec/WMWorkloadTools.py
	LineNumber : 133
	ErrorNr : 0

Traceback:

<@---------- WMException End ----------@>

[21/Oct/2024:12:40:30]  SERVER REST ERROR WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue b605a54fcc92e4fbf18b20eabe763378 (Invalid spec parameter value: Argument 'Team' with value '', doesn't pass the validate function.
It's definition is:
                              "validate": lambda x: len(x) > 0},
)
[21/Oct/2024:12:40:30]    Traceback (most recent call last):
[21/Oct/2024:12:40:30]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 749, in default
[21/Oct/2024:12:40:30]        return self._call(RESTArgs(list(args), kwargs))
[21/Oct/2024:12:40:30]      File "/usr/local/lib/python3.8/site-packages/WMCore/REST/Server.py", line 828, in _call
[21/Oct/2024:12:40:30]        v(apiobj, request.method, api, param, safe)
[21/Oct/2024:12:40:30]      File "/usr/local/lib/python3.8/site-packages/WMCore/ReqMgr/Service/Request.py", line 224, in validate
[21/Oct/2024:12:40:30]        raise InvalidSpecParameterValue(msg) from None
[21/Oct/2024:12:40:30]    WMCore.ReqMgr.DataStructs.RequestError.InvalidSpecParameterValue: InvalidSpecParameterValue b605a54fcc92e4fbf18b20eabe763378 [HTTP 400, APP 1102, MSG 'Invalid spec parameter value: Argument \'Team\' with value \'\', doesn\'t pass the validate function.\nIt\'s definition is:\n                              "validate": lambda x: len(x) > 0},\n', INFO None, ERR None]
[21/Oct/2024:12:40:30] reqmgr2-bcdccd8c6-hsmlj <IP_ADDRESS>:33620 "PUT /reqmgr2/data/request/tivanov_ACDC_TaskChain_Prod_SiteListsTest_v6_241021_114436_6621 HTTP/1.1" 400 Bad Request [data: 3544 in 895 out 53804 us ] [auth: ok  ***]

@todor-ivanov given that this PR was started while we had the 3 pull requests merged into master/head, wouldn't it make this development more clean if we apply the changes in this PR on top of https://github.com/dmwm/WMCore/pull/12148?
Or having a second look into the commits in this one, it looks like it has all the commits from #12148. If that is the case, should we close out #12148 to avoid any possible confusion?
In addition, please make sure the initial PR description is up-to-date.

hi @amaltaro  that was  my idea as well.  I am  pretty much in favor of closing https://github.com/dmwm/WMCore/pull/12148 while testing the fix  about the broken assignment-approved transtopm, provided here with my last two commits, I had to rebase on top of it #12148  already, so the current PR has all that was there as well.
I'll merge the two PR descriptions as  well.

And before I forget to say it once again, when validating this feature a couple of weeks ago, I noticed that we could update the site lists in ReqMgr2 Web UI as well.
It looks like the original idea for get_modifiable_properties was to render fields in the Web UI, instead of making that an authoritative list of parameters that are allowed to change in each status.
If we want to repurpose that, I think it is fine. But I am not very comfortable with allowing users to change site lists in the Web UI. It's very much error-prone, and given the cost of this operation across the system, we need to keep it as low as we can.
Said that, @todor-ivanov can you please check with the P&R team on the actual needs to have this feature in the Web UI as well? If they are happy having this feature only through REST API - programmatically - that would be the best IMO.

Hi @amaltaro, if I am to revert this at this stage, it would require a significant refactoring of the whole idea behind the whole change. I am not even sure it would be possible, because this is how it is validated - this is my understanding of the code even at the current stage. WE were simply ignoring anything sent with the user's request and just setting up the priority field (all the rest we were setting to zero). I am not sure we are actually changing any behavior. To it seems we are all good. . And I actually do find it quite useful to have it exposed to the WEB UI. At the end adding a feature to be available through one interface and not through the another...  would be yet one more if we should remember forever.

The way the REST and Web UI are constructed is different, so there is no conditional statement involved in this story.
I also agree that having it in the Web UI is useful. But my concern is on typos and mistakes by using the Web UI, which can perhaps lead to error. Right now, Web UI is only used for ACDC assignment, AFAIK.
I am curious to know the position of the P&R team on this. Can you please communicate it with Ahmed/Hassan?

typos and mistakes by using the Web UI,
the SiteLists are  drop down menus.

And we got the P&R reply -The'd prefer to have the WEB UI interface as well

Thank you Todor. That would have been my answer as well, from the user perspective.

test this please

@amaltaro @todor-ivanov I propose to keep going with the proposed solution, with claryfing to operators they will be accountable for any disruptions induced with improper use of this functionality.
I have only question:

This solution prevents anyone to pick a site that isn't part of our resource site pool, am I correct? For example, I can select T1_FNAL_US, but I cannot select T2_FNAL_US

hi @anpicci :

This solution prevents anyone to pick a site that isn't part of our resource site pool, am I correct? For example, I can select T1_FNAL_US, but I cannot select T2_FNAL_US

Yes. The site names are predefined  and already populated in the list of possibilities:

Btw, @todor-ivanov there are some failing checks for Jenkins

I cannot make sense of these so far. @khurtado  how should I read them? I see you have cancelled the tests, are those reliable at this stage?

This  whole PR is transient, providing a bugfix related to assignment-approved non-state transition actions which was found during the validation of the previous WMCore tag. The next PR https://github.com/dmwm/WMCore/pull/12099 is going to remake a big part of this logic,  and we  should concentrate on discussing the solution there. So I'd suggest we merge this one (it has already been properly tested  and proved it fixes the bug reported) and I rebase https://github.com/dmwm/WMCore/pull/12099 on top of this one, such that we can continue our work on this feature.

squashed and rebased as well

@todor-ivanov unless you have a strong reason not to, I think it would be better to bring in https://github.com/dmwm/WMCore/pull/12099 on top of these changes - or at least, the relevant ReqMgr2 changes.
This will make traceability and review of these changes (which are implemented and then partially/totally deleted in the upcoming PR) much easier. The other PR is supposed to be fixing "Update workqueue elements upon workflow site list change", so it would be better to have only that relevant code in there as well.

@amaltaro I have rebased https://github.com/dmwm/WMCore/pull/12099 on top of this PR, but currently it is not visible all that will be moved from this PR into the other, until we merge the current one into master, simply because the current changes are  not yet into master. If you want to see the exact diff between them both before the current one is merged, you may look at this temp PR which I created in my repo, just for comparison: https://github.com/todor-ivanov/WMCore/pull/1/files

hi  @amaltaro
about:

I think I requested it in my previous review. We need to validate the site lists provided by the user, see StdBase for the actual validation function.

I think the contents of the request are already validated, but even if not it would be much better to have this development added while working with the next  PR

this PR introduces 2 extra calls to ReqMgr2, retrieving the workflow data for some (pre-)processing, as in:

in the Validation.py module: https://github.com/dmwm/WMCore/pull/12120/files#diff-87fd02ae1a3e3ffa5aec6f34177fcf3471187007cfb2d9a668bf4ef8f726b12aR107
in the Request.py module: https://github.com/dmwm/WMCore/pull/12120/files#diff-120ee6838284a3d1c1799f511da7f147179d0a955f87d0da6fc8b58a8b66c794R444

I can relate to this comment. I was already thinking of uniting those two calls in a single one, but again it will happen much easier when we move all workload content modification operations to WorkloadHelper.
So lets  merge this one and move this discussion there. The current code is tested  and not going to break RequestManager if it goes to master branch.

For the site validation, we need to validate it as soon as possible in the chain. Having said that, the proper place would be to either use the Request.py or the Validation.py modules, instead of WMWorkload.


Shadows look terrible in web builds

What's the hardware?

GTX 1080 + amdgpu driver (linux)

rx580 + amdgpu driver (linux)

Oh, so it's desktop GPU...
This kind of artifacts tend to appear when ppl run Web builds (that are essentialy Desktop) on mobiles.
Maybe OpenGL ES is not properly supported on hardware and drivers?

Idea for future: treat Web build as mobile unless it is specified otherwise in CMake.

Same happens on windows with GTX 1080.

Can you check samples here?
Do they look in the same way?

Same.

Now they look ok in your samples, closing.


Omit version on changelog preview cmd

The command chlog-preview had a version which prevents the GH action to pass. The command don't need the version, as it will use a vTODO by default for that.
CC @breedx-splk

That now will produce:
⬢ [Systemd] ❯ make chlog-preview
./internal/tools/bin/chloggen update --config .chloggen/config.yaml --dry
Generated changelog updates for user:
## vTODO

### 🧰 Bug fixes 🧰

- `http`: Testing changelog gen (#566)


[ch40438] Profile>Lists carousel: the indicator components or difficult to see

Story details: https://app.clubhouse.io/tvtime/story/40438

@Aqua-Ye I should probably get rid of this PR if the other solution to the paging problem does the trick

@Aqua-Ye I should probably get rid of this PR if the other solution to the paging problem does the trick

Sounds good


Fix for #129 - JPEGmini Sierra input name changed

I was able to dig into the #129 Sierra issues. You're guide was super helpful @JamieMason, No idea why the UI elements changed names ¯_(ツ)_/¯

Brilliant @stefancrain, I'll get this merged in one evening this week. Thanks so much.

Thanks so much for this @stefancrain, this was released in 1.14.9.


clangd-indexer should use or document -extra-arg="-Wno-everything"

Projects that use g++ may not necessarily compile cleanly with clang due to several warnings treated as errors. The following option to clangd-indexer significantly helps in creating a useful index for these projects:
-extra-arg="-Wno-everything"
Given the purpose of the index, perhaps this should be the default option?
If not, maybe it could at least be promoted more in documentation/usage as it results in a much more useful index for the purposes of symbol lookups etc.

After more thought - does the background indexer for clangd have an equivalent option for:
-extra-arg="-Wno-everything"
I assume clangd would fail to index code that clang would fail to compile if it hits an -Werror type of warning. Bearing in mind that g++ wouldn't fail to compile the same code, hence the compiler options do not specify to ignore the problematic warnings.

For some more context:
We have a project compiled with g++ that uses "-Wall -Werror".  This compiles fine with g++, but fails in clang++ due to the addition of other warnings (e.g -Wunused-function) that g++ doesn't have.
Effectively what we need is for clangd to honour the fact the compile_commands.json specifies 'g++' and turn off all clang++ specific warnings.  This could be done automatically, or via a command line option to provide additional args to the compiler, similar to what clangd-indexer supports.
It may be necessary have two sets of 'extra-args'. One for the indexer, which would be safe to turn off all warnings, and another setting for the diagnostics where you'd likely want to leave on all the g++ warnings.

Yeah there are a few different ways to address your problem, but i think the cleanest is to disable all warnings during indexing as you suggest.
This should happen for all the different types of indexing we do (static, dynamic, background, it's a mess...).
Futzing with compile commands is always fiddly (it can be a clang-cl style command line too!) but that's just a better reason to do this in one place.

I can't help but think clang should have a gcc version x compatible mode where it disables additional warnings that gcc version x doesn't have. Or at the very least doesn't convert them into errors even if asked to. I assume it hasn't been asked for often enough to warrant doing.

I assume clangd would fail to index code that clang would fail to compile if it hits an -Werror type of warning. Bearing in mind that g++ wouldn't fail to compile the same code, hence the compiler options do not specify to ignore the problematic warnings.

Turns out this assumption doesn't hold :-) Non-fatal errors don't stop indexing, and all symbols are still collected.
However there are still reasons to do this:

-ferror-limit (which has a default) can cause warnings with -Werror to create a fatal error, that does stop indexing
the warning spam from clangd-indexer isn't helpful
some warnings are expensive, we should avoid computing them at all

Fixed in https://reviews.llvm.org/rL357186
(Though I suspect this wouldn't have prevented an index from building in most cases)

I can't help but think clang should have a gcc version x compatible mode where it disables additional warnings that gcc version x doesn't have. Or at the very least doesn't convert them into errors even if asked to. I assume it hasn't been asked for often enough to warrant doing.

I can see how this would be desirable, though it also sounds hard to keep in sync. In any case that's indeed a FR for clang.


chef-zero dependency conflict with Chef 11

Description
Chef-zero dependency is not capped in Chef 11, which causes gem install to fail on Ruby 2.0.
This is due to bundler being unable to account for ruby version in the dependency graph (presumably due to https://github.com/bundler/bundler/issues/2721).
Chef Version
Chef Rubygem 11.16.4
(Reproduceable for any version 11)
Platform Version
OSX 10.11.4
(Isn't platform specific though)
Replication Case

Install Ruby 2.0 and switch:

λ rbenv install 2.0.0-p648
λ rbenv shell 2.0.0-p648

Make a test directory and a simple Gemfile:

λ mkdir /tmp/test
λ vim Gemfile
λ cat Gemfile
source 'https://rubygems.org'

gem 'chef', '>= 11.16.4'

Bundle gems:

λ gem install bundler
λ bundle

EXPECTED RESULT:

chef gem is installed

ACTUAL RESULT:

Installation fails:

Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Resolving dependencies...
Installing builder 3.2.2
Using bundler 1.12.3
...
Installing chef-zero 4.6.2

Gem::InstallError: chef-zero requires Ruby version >= 2.1.0.
...
An error occurred while installing chef-zero (4.6.2), and Bundler cannot continue.
Make sure that `gem install chef-zero -v '4.6.2'` succeeds before bundling.

so in general:

we don't support anything other than omnibus installs, users are on their own.
the workaround is to put ruby "1.9.3" or ruby "2.0.0" in the Gemfile, both of which are now unsupported ruby versions.
chef 11 isn't receiving anything other than security updates at this point (and isn't receiving many of those since its ruby version and openssl version are both off support now).

so i think no.  if users actually hit this they need to upgrade things (preferably get off of chef-11 since its rapidly becoming a complete dead end).


This plugin doesn't seem to work with the offline plugin from MkDocs material

I posted a detailed report at https://github.com/squidfunk/mkdocs-material/issues/6749. I'm guessing that it's mostly the offline plugin's fault, but that's just a guess, and perhaps there's something on this side that could be changed to fix it.
Any advice or workarounds would also be appreciated. Thank you for making the plugin!

Thanks for the detailed report.
This happens because the configuration file inheritance of Mkdocs works by replacing all keys of parent inherited configurations. So, in this case, plugins: ['include-markdown'] is replaced by plugins: ['offline'].
See mkdocs/utils/yaml.py. This can be reproduced with:
>>> import deepmerge
>>> mergedeep.merge({"plugins": ["include-markdown"]}, {"plugins": ["offline"]})
{'plugins': ['offline']}

Maybe, this can be considered as a bug or limitation of Mkdocs, but not sure if this is by design. I'm going to continue the research and open the corresponding discussion if appropiate. For now, you must consider redesigning how are you inheriting the configuration, as the current behaviour is the expected (see Configuration Inheritance).

You are correct. Thank you so much, I really appreciate it!
I added all the plugins to mkdocs-offline.yml file for now, might try to do something more clever later.
Please share any bugs you open, if you are indeed planning to research this further.

Seems like this is already being discussed on https://github.com/mkdocs/mkdocs/issues/3216, so closing this for now.


Feature/btn enhancement

fixes #286
Consistency of button shadow and radius all over the project.

Both of you have given a pr for this

Hi @anushbhatia , I have made the necessary changes.

No, this effect looks better

No, this effect looks better

Which 1 ?

the current button on hover increases drop shadow around that's better and minimal


docs: Add iOS Info.plist install step

This PR addresses the issue I ran into while trying to submit an app to the App store. I failed to add a required Info.plist value and the submission was not successful.
Fixes #129

Thanks a lot!


remove null prefix and bump test

standard is to remove the null safety suffix, bumped version ready to upload to pub.dev
its been a while, lets get #17 closed

Thank you so much @AntonyLeons .  Pardon the delay.  I was without a personal computer for a month.


Updating the Network View after Scoring an IP address

After scoring an IP address, sometimes additional data disappears from the network view and sometimes the scored data doesn't disappear.

PR: https://github.com/Open-Network-Insight/oni-oa/pull/34

@daortizh , the ipython notebook , is not being refreshed.


[Migrator] Re-enable wrap_optional.swift test.

This had to be reworked a bit to deal with the fact that IUOs are no
longer a distinct type and there were uses of IUOs that are not
supported after SE-0054.
Fixes: rdar://problem/37040141

@swift-ci Please smoke test

@swift-ci Please smoke test Linux platform

@swift-ci Please smoke test OS X platform


Support regular left click

Support regular left click on links to open new temporary containers. Disabled by default.
Depends on #29

Just published version 0.34 with left click support.


Error: Pull Request is not mergable

Hey @peter-evans im attempting to create a PR to merge a dev branch into a qa branch. However, seeing an error message when this runs on the merge PR job of the workflow. The error appears with the message Error: Pull Request is not mergable.
Run juliangruber/merge-pull-request-action@v1
  with:
    github-token: ***
    number: 1
    method: merge
Error: Pull Request is not mergeable

Here is the particular part of the config being used in the yaml:
      - name: create PR to deploy to QA
        uses: peter-evans/create-pull-request@v3
        with:
          branch: deploy-qa
          base: react-qa
          title: QA Deploy (${{ github.actor }})
          commit-message: create PR to deploy react-dev to react-qa
          body: Auto-generated PR (via Github Actions manual workflow) to deploy react-dev to react-qa. Intiated by ${{ github.actor }}.
          delete-branch: true

I have my theories on why this is not working, but was wondering if you have seen this particular appear or if you see something that should be improved in that particular part of the yaml. Any advice is appreciated. Thank you.

Hi @jcquiles
The error message appears to come from the action juliangruber/merge-pull-request-action. That is not my action so I would recommend asking for help there if you need it. Most likely the pull request is not in a state where it can be merged. e.g. There are uncompleted checks on it.

@peter-evans thanks for getting back back to me! I see alright, thank you for the input i'll reach out.


Return number of characters written instead of result

Hi,
I need to know the number of characters used when formatting int and I have noticed that there is no other way other than using formatted_size which is nice but isn't calling an extra function to calculate number of serialized characters redundant?
My idea is to change all write_* member function on writer class to return std::size_t of number of written characters instead of void. Is that OK? I can make these changes myself and create PR if needed.

Hello,
thank you for using emio. :)
formatted_size is part of the high-level API which matches with format/format_to.
Do you have an example why do you need those sizes?

Hi again,
no problem the library is awesome.
Well, I am using it to serialize JSON into buffer of arbitrary size. The issue is that the API I have to provide needs to return the number of bytes written. I can do that using formatted_size but I kind of wanted to simply return the result of format_to to not waste time computing the size.
I might not be aware of all library's features. And, also standard's library printf and its friends all return the number of characters written so it might be even helpful for someone else. I can provide some kind code example if it is needed, later today :).

@dudoslav how did you solve your issue? Do you still need the length as return?


If using standard ubuntu repos you need to install npm separately

Tested on ubuntu 14.04 however 12.04 appears to have a separate npm package as well

Closed it favor of #103


[BUG] GetJsonObject throws exception when json path contains a name starting with '

Describe the bug
$.'a is a valid path from Spark's check, so it is normalized to $[''a'] and passed to kernel in plugin, resulting in
ai.rapids.cudf.CudfException: CUDF failure on: /home/jenkins/agent/workspace/jenkins-spark-rapids-jni_nightly-dev-690-cuda11/thirdparty/cudf/cpp/src/json/json_path.cu:631: Invalid empty name in JSONPath query string

Note that $[''a'] is actually an invalid path from Spark's validation. So maybe the normalization we did in plugin b9c292c is losing some information when converting the List[PathInstruction] back to a string and causing some problems.
And at the same time, cuDF kernel can't match this case as well if we remove the normalization.
data: {"'a":"1"}
Spark, spark-rapids, cudf and jsonpath.com will give very different results in this case.

JSONPath
Spark
spark-rapids
cudf kernel(spark-rapids without normalization)
jsonpath.com

$[''a']
null
null
Invalid empty name in JSONPath query string
["1"]

$.'a
1
Invalid empty name in JSONPath query string
Encountered invalid JSONPath input string
No match

I think we can fallback on this case until we have a path parser that matches Spark's behavior.

https://github.com/rapidsai/cudf/pull/15082 looks to be contributing to fixing this issue, will update after it is included in the plugin.

Will be fixed by: https://github.com/NVIDIA/spark-rapids-jni/pull/1868


[Feature Request] Unable to have check boxes without label

Existing Component
Yes
Component Name
el-checkbox
Description
I am trying to display data in tabular layout with checkbox for each record. I tried to make use of el-checkbox but without binding to label properties I am unable to make it work propery, it would be nice to render checkboxes under list without having labels.
something as follow
<el-checkbox v-model="bindingModel" :value="valueToBeAddedInsideBindingModelList"/>

Do you mean this https://jsfiddle.net/yqdrpLv3/

@jikkai : this is exactly what I wanted and I end up styling the list to make the display property of labels none, although the provided solution is also a hacky solution.
display label should not be the bounded value of checkbox and it should be fixed to make it powerfull component


Programmable vertex and fragment shaders

References:

https://chat.openai.com/share/1e137304-313c-4f05-ac22-5305a345fb98

Solved by #26


rafce snippet    " return " in a single line. Can the div be in a braces by default?

rafce snippet gives below code
import React from 'react';
function FirstPage() {
return ;
}
export default FirstPage;
Previously return statement was like
return(

)
How can i change to old return format?

@anilbdev right now, a snippet is integrated with a prettier config. Take a look at settings disable semiColons option and restart vscode


Adds an action to validate Puppet modules using Puppet PDK.

Adds an action to validate Puppet modules using Puppet PDK to the Testing and Linting section.

@mpepping your changes have been merged, thanks for your contribution 👍


Incorrect querystring in example

Description
titleSearch should be titleFilter in the below screenshot, thank you

Page URL
https://learn.microsoft.com/en-us/aspnet/core/blazor/tutorials/movie-database-app/part-6?view=aspnetcore-8.0
Content source URL
https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/blazor/tutorials/movie-database-app/part-6.md
Document ID
6d15bd42-ea91-ec59-1ebc-185653dc7ef4
Article author
@guardrex

Thanks @sdtrip7s ... I'll fix that image right now 🏃♂.


tuir: use the maintained fork and update 1.29.0 -> 1.31.0

Description of changes
The latest commit of original forked from rtv tuir is more than 4 years ago: https://gitlab.com/ajak/tuir. Also that version currently does not allow to login and comment/post in reddit and have some navigation bug.
Recently arise a actively supported fork from Chocimier: https://gitlab.com/Chocimier/tuir that is also listed here: https://gist.github.com/michael-lazar/8c31b9f637c3b9d7fbdcbb0eebcf2b0a
I reviewed the latest changes from upstream and tested it with a derivation, everything is working again.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

hei @matthiasbeyer, thanks! will do it

Ah, sorry. The commit message on the maintainer commit should be tuir: Add brokenpip3 as maintainer

Ah, sorry. The commit message on the maintainer commit should be tuir: Add brokenpip3 as maintainer

sorry about that! fixed :)

it seems that the ofborg tests on aarch64 are stuck since 6 days, not sure what I can do to unlock them


How to handle names that are reserved words

If a fn/param/prop etc is a reserved word, how should it be named?
Propose that a suffix is added depending on the context. _fn, _param, _prop respectively.

Those are all fine suggestions. _fn is a choice I've seen in other crates for various reasons. I've not seen the others, but 1) I see no problem with them, but 2) don't think they are necessary. How would param names even conflict? Model types will be PascalCase while params would be snake_case. Besides, the compilers is a little "smarter" than that and almost always can differentiate based on context.


Figure out why test (256) keeps failing

Sometimes (only sometimes!) it gets stuck in an infinite loop of printing out address sanitizer errors. Very concerning, but only seems to happen for the 256-avx case so far. This one is currently not allowed to go into the python wheels due to a previous mysterious crash, so this isn't urgent, but it sure would be nice to know why these things are occurring.

Nevermind it has now also happened for test (64) and is therefore very concerning.

Based on https://github.com/quantumlib/Stim/pull/718 this is a bug in gtest rather than a bug in stim.

I have the same bug in my primecount project in the code below which only uses the math functions from the C++ standard library:
  for (int i = 0; i < 100; i++)
  {
    T term = (Li(t) - x) * std::log(t);

    // Not converging anymore
    if (std::abs(term) >= std::abs(old_term))
      break;

    t -= term;
    old_term = term;
  }

My bug only occurs on Ubuntu 22.04 & 23.10 when running in a virtual machine and enabling the GCC/Clang sanitizers. When I switched my CI test to ubuntu-20.04 the bug disappeared. (When I tested using Ubuntu 22.04 & GCC sanitizers on a real server (no VM or Docker container) it also works without any issues)
After more than 2 hours of debugging I couldn't figure out the exact cause of the issue, but it looks like the issue is caused by a Ubuntu >= 22.04 bug or a compiler/sanitizer bug.

@kimwalisch Thanks, that's very helpful to know that I can work around it by pinning the version of ubuntu used by CI.

This seems to have been resolved externally. Hasn't happened in a PR for about a week now, whereas before it was happening multiple times per PR.


Swets don't give monster hunter

Probably other mobs and other advancements as well

Monster Hunter is based off of a hardcoded list, and cannot be expanded. We are better off creating a separate advancement


Minor change to ppp

Codecov Report

Merging #261 (246951b) into master (b97a43c) will increase coverage by 3.10%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master     #261      +/-   ##
============================================
+ Coverage     56.87%   59.97%   +3.10%
- Complexity      714      750      +36
============================================
  Files           138      138
  Lines          2852     2856       +4
  Branches        371      373       +2
============================================
+ Hits           1622     1713      +91
+ Misses         1104     1015      -89
- Partials        126      128       +2

Impacted Files
Coverage Δ

...eedu/address/logic/commands/tag/AddTagCommand.java
73.33% <0.00%> (-1.67%)
:arrow_down:

src/main/java/seedu/address/model/AddressBook.java
80.55% <0.00%> (ø)

.../java/seedu/address/storage/JsonAdaptedPerson.java
96.42% <0.00%> (+3.83%)
:arrow_up:

.../model/person/PersonContainsKeywordsPredicate.java
64.70% <0.00%> (+5.88%)
:arrow_up:

...u/address/logic/commands/task/MarkTaskCommand.java
77.77% <0.00%> (+77.77%)
:arrow_up:

...address/logic/commands/task/UnmarkTaskCommand.java
77.77% <0.00%> (+77.77%)
:arrow_up:

...dress/logic/parser/task/MarkTaskCommandParser.java
100.00% <0.00%> (+100.00%)
:arrow_up:

...ess/logic/parser/task/UnmarkTaskCommandParser.java
100.00% <0.00%> (+100.00%)
:arrow_up:

...ogic/commands/contact/CopyContactEmailCommand.java
100.00% <0.00%> (+100.00%)
:arrow_up:

.../parser/contact/CopyContactEmailCommandParser.java
100.00% <0.00%> (+100.00%)
:arrow_up:

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


The VS Code Sidebar is not visible in the light theme

Describe the bug
Using the light theme the VS Code Sidebar becomes unusable because the icons are mostly invisible. The problem is that the icons are in color white and the background is grey light.

Reproduction
Open VS Code with the sidebar enabled.
System Info
System:
    OS: macOS 12.2.1
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 164.52 MB / 16.00 GB
    Shell: 5.8 - /bin/zsh
  Binaries:
    Node: 16.13.2 - ~/.nvm/versions/node/v16.13.2/bin/node
    Yarn: 1.22.19 - /usr/local/bin/yarn
    npm: 8.1.2 - ~/.nvm/versions/node/v16.13.2/bin/npm
    Watchman: 2<IP_ADDRESS> - /usr/local/bin/watchman
  Browsers:
    Chrome: 111.0.5563.64
    Firefox: 109.0.1
    Safari: 15.3

Validations

[X] Follow our Code of Conduct
[X] Read the Contributing Guide.
[X] Check that there isn't already an issue that reports the same bug to avoid creating duplicates.
[X] Check that this is a concrete bug. For Q&A, please open a GitHub Discussion instead.
[X] The provided reproduction is a minimal reproducible of the bug.

Hey!
Thanks for reporting this, I believe this is caused by the fact that we’re not specifying the color of the icons at the theme level, see:
https://code.visualstudio.com/api/references/theme-color#activity-bar


refactor(useFilenamingConvention): support dynamic route filenames

Summary
Fix #3465
I had to modify the way we generate test names. To have a more robust approach, we now rely on biome_string_case case conversion. I had to change some test name to accommodate with this change.
Test Plan
I added four tests.

Ehehe, you're aren't wrong 😅

Just to add svelte kit also uses +page@(app).svelte to escape layout https://kit.svelte.dev/docs/advanced-routing#advanced-layouts-page

+page@(

Is (app) a placeholder?

Just to add svelte kit also uses +page@(app).svelte to escape layout https://kit.svelte.dev/docs/advanced-routing#advanced-layouts-page

Could you detail the syntax:

Is page/layout fixed strings? or is it the name of the page/layout?
If I understand corerctly, the part behind @ is optional?
Are (app)/[id] placeholders or are app/id placeholders?

Anything after @ is just regular route name, it tells from which route above it should inherit nested layout. +page@(app) just means that layout should break out to (app) above. @ is optional and advanced feature.
I also think this should be supported only for svelte files since it is quite unusual syntax. I am not 100% garunateed, but I can't find anything for non svelte files on search. svelte files using that pattern for reference.

I am going to merge this PR. I will consider extending the rule with a configuration to customize the accepted patterns.


*** THIS REPOSITORY IS DEAD ***

It is currently being actively updated in OSPG's repository.
I recommend that contributors move here.
https://github.com/OSPG/binwalk
more information
https://github.com/ReFirmLabs/binwalk/issues/671

https://github.com/ReFirmLabs/binwalk/tree/binwalkv3


Allow multiple filenames to be passed to Rhino CLI

This patch allows multiple filenames to be passed to the Rhino CLI. When checking multiple files, you end up starting up and tearing down a JVM for every single file, which adds a significant amount of time to the overall linting process. By allowing the Rhino CLI to process multiple files, you can dramatically reduce the total amount of time for processing a large number of files.
When I made this change to the CSSLint JSHint task, it went from taking 45s to check the entire source tree to 3s.
I tried to ensure backwards compatibility with the current CLI, and believe everything still works the same way. The only difference is that any value passed on the command line without an = sign is considered to be a filename.

Thanks!


fails to create certificates

ERL 1.90 with both IPv4 and IPv6 interfaces, the actual FQDN has been replaced with f.q.d.n below
Are you sure you want to do this? (y/n) y
Firewall rule that opens port 80 has been added.
Parsing account key...
Parsing CSR...
Registering account...
Registered!
Verifying f.q.d.n...
f.q.d.n verified!
Signing certificate...
Certificate signed!
/config/letsencrypt/renew.sh: line 114: =0: command not found
/config/letsencrypt/renew.sh: line 116: =0: command not found
/config/letsencrypt/renew.sh: line 117: [: -ne: unary operator expected
Error: The previously added iptables rule could not be deleted!
iptables: Bad rule (does a matching rule exist in that chain?).
/config/letsencrypt/renew.sh: line 114: =1: command not found
ip6tables: Bad rule (does a matching rule exist in that chain?).
/config/letsencrypt/renew.sh: line 116: =1: command not found
/config/letsencrypt/renew.sh: line 117: [: -ne: unary operator expected
Updating router configuration...

the /config/auth/letsencrypt/ directory only shows the letsencrypt_account.key, the  domain.key and the domain.csr

I believe it was caused by an incorrect variable declaration, which I should've fixed. Could you pull the latest update and see if the issue happens again? Thanks!


Proposed 0.33.0

Current coverage is 64.57% (diff: 72.44%)

Merging #1859 into master will decrease coverage by 5.33%

@@             master      #1859   diff @@
==========================================
  Files           861        704     -157
  Lines         67809      50829   -16980
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
- Hits          47403      32822   -14581
+ Misses        20406      18007    -2399
  Partials          0          0

Powered by Codecov. Last update 1ff972f...3130220


How to get all transactions ?

Is there function to get all transactions of specifc wallet address?

any idea for this?

its not working like this, you should use moralis or alchamey to do that

@dvird pls how can one do that? Pls can I contact u to learn more - Pls may share ur email or Twitter, here's mine
Email -<EMAIL_ADDRESS>Twitter - tech_atoms

@dvird I would appreciate it if I can learn about resolving this, here are my contact details
Email -<EMAIL_ADDRESS>Twitter - tech_atoms


Fix selected option styles in assignee select dropdown menu

Problem
In https://github.com/freeats/freeats/issues/114 we applied Tabler's styles for select's dropdown menu. But Recruiter select on Candidate and Position pages doesn't have correct style for selected option.

Example of correct style (Open option):

Solution
Investigate why selected option style is not applied for assigned recruiter and fix it.

@wrmk can you take this one? You have more experience with selects

took


Unable to auto-scale Kubernetes cluster

Hi!
I am unable to auto-scale Kubernetes clusters. As I understand, it create a "cluster-autoscaler" deployment that decides whether to scale or not. However, it does not seem to work, since it logs multiple errors and warnings in the pod, even though it is a completely clean cluster.
Normal scaling seems to work just fine.
Setup
A "default" CloudStack setup running KVMs.
Settings (relevant)

Cloud kubernetes service enabled true
Cloud kubernetes cluster experimental features enabled true
Cloud kubernetes cluster max size 50

The nodes uses the following service offering:

2 CPU x 2.05 Ghz
2048 MB memory
8 GB root disk

Replicate

Create a new cluster using Kubernets 1.24 ISO found here:
http://download.cloudstack.org/cks/

Enable forced auto-scaling
Since the cluster starts with only one worker node, auto-scaling with 3-5 nodes should trigger an upscale (I assume)

Check the logs for cluster-autoscaler in the Kubernetes cluster
Some notable entries:

E0807 14:41:30.317148       1 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1.CSIDriver: failed to list *v1.CSIDriver: csidrivers.storage.k8s.io is forbidden: User "system:serviceaccount:kube-system:cluster-autoscaler" cannot list resource "csidrivers" in API group "storage.k8s.io" at the cluster scope

E0807 14:41:32.388828       1 reflector.go:138] k8s.io/client-go/informers/factory.go:134: Failed to watch *v1beta1.CSIStorageCapacity: failed to list *v1beta1.CSIStorageCapacity: csistoragecapacities.storage.k8s.io is forbidden: User "system:serviceaccount:kube-system:cluster-autoscaler" cannot list resource "csistoragecapacities" in API group "storage.k8s.io" at the cluster scope

Even though I have not edited anything myself, it is a clean CKS cluster
W0807 14:41:43.251280       1 clusterstate.go:590] Failed to get nodegroup for 6a4c91a3-9694-4596-9ddd-dc86e60136ff: Unable to find node 6a4c91a3-9694-4596-9ddd-dc86e60136ff in cluster

W0807 14:41:43.251361       1 clusterstate.go:590] Failed to get nodegroup for bd0b855f-6dc6-4678-9bea-b52329333024: Unable to find node bd0b855f-6dc6-4678-9bea-b52329333024 in cluster

I0807 14:57:06.667061       1 static_autoscaler.go:341] 2 unregistered nodes present

The IDs are correct in CloudStack
The entire log:
logs-from-cluster-autoscaler-in-cluster-autoscaler-5bf887ddd8-hxg2g.log
Please tell me if you need more logs to look at, or if I should try some other configuration.
Thanks!

cc @Pearl1594 @weizhouapache @DaanHoogland  pl help triage when you've time
@saffronjam this looks like an issue with k8s autoscaler (https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/cloudprovider/cloudstack/README.md) or with CKS (upstream https://github.com/apache/cloudstack)

Hi @saffronjam
The autoscaling feature works fine on a k8s cluster deployed by CKS.
Please find the steps that i have followed
After you enable autoscaling on the cluster

Make sure the autoscaling pod is deployed in the cluster
kubectl get pods -A
NAMESPACE              NAME                                             READY   STATUS    RESTARTS      AGE
kube-system            cluster-autoscaler-8d8894d6c-q8r4h               1/1     Running   0             19m

Before scaling
➜  ~ k get nodes -A
NAME                     STATUS   ROLES           AGE   VERSION
gh-control-18debd77e18   Ready    control-plane   10h   v1.28.4
gh-node-18debd8440c      Ready    <none>          10h   v1.28.4

Deploy a application
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=80

➜  ~ k get pods -A
NAMESPACE              NAME                                             READY   STATUS    RESTARTS      AGE
default                hello-node-7c6c5fb9d8-bgd69                      1/1     Running   0             10h

Scale the application
kubectl scale --replicas=150 deployment/hello-node
logs from the autoscaler pod

I0228 04:51:46.798087       1 reflector.go:536] /home/djumani/lab/autoscaler/cluster-autoscaler/utils/kubernetes/listers.go:356: Watch close - *v1.StatefulSet total 9 items received
I0228 04:51:51.244004       1 static_autoscaler.go:235] Starting main loop
I0228 04:51:51.244382       1 client.go:169] NewAPIRequest API request URL:http://<IP_ADDRESS>:8080/client/api?apiKey=***&command=listKubernetesClusters&id=14b42c5d-e7e6-4c41-b638-5facb98b0a93&response=json&signature=***
I0228 04:51:51.279721       1 client.go:175] NewAPIRequest response status code:200
I0228 04:51:51.280798       1 cloudstack_manager.go:88] Got cluster : &{14b42c5d-e7e6-4c41-b638-5facb98b0a93 gh 2 3 1 1 [0xc0013bfad0 0xc0013bfb00] map[gh-control-18debd77e18:0xc0013bfad0 gh-node-18debd8440c:0xc0013bfb00]}
W0228 04:51:51.292009       1 clusterstate.go:590] Failed to get nodegroup for dc95f481-15a3-4629-bb78-055fbe4a7139: Unable to find node dc95f481-15a3-4629-bb78-055fbe4a7139 in cluster
W0228 04:51:51.292052       1 clusterstate.go:590] Failed to get nodegroup for facdd040-53fe-4984-8654-c186a7cdde9b: Unable to find node facdd040-53fe-4984-8654-c186a7cdde9b in cluster
I0228 04:51:51.292095       1 static_autoscaler.go:341] 2 unregistered nodes present
I0228 04:51:51.292105       1 static_autoscaler.go:624] Removing unregistered node dc95f481-15a3-4629-bb78-055fbe4a7139
W0228 04:51:51.292126       1 static_autoscaler.go:627] Failed to get node group for dc95f481-15a3-4629-bb78-055fbe4a7139: Unable to find node dc95f481-15a3-4629-bb78-055fbe4a7139 in cluster
W0228 04:51:51.292137       1 static_autoscaler.go:346] Failed to remove unregistered nodes: Unable to find node dc95f481-15a3-4629-bb78-055fbe4a7139 in cluster
I0228 04:51:51.292569       1 filter_out_schedulable.go:65] Filtering out schedulables
I0228 04:51:51.292590       1 filter_out_schedulable.go:137] Filtered out 0 pods using hints
I0228 04:51:51.624523       1 filter_out_schedulable.go:175] 44 pods were kept as unschedulable based on caching
I0228 04:51:51.624568       1 filter_out_schedulable.go:176] 0 pods marked as unschedulable can be scheduled.
I0228 04:51:51.624667       1 filter_out_schedulable.go:87] No schedulable pods
I0228 04:51:51.870314       1 static_autoscaler.go:480] Calculating unneeded nodes
I0228 04:51:51.870353       1 pre_filtering_processor.go:66] Skipping gh-control-18debd77e18 - node group min size reached
I0228 04:51:51.870361       1 pre_filtering_processor.go:66] Skipping gh-node-18debd8440c - node group min size reached
I0228 04:51:51.870413       1 static_autoscaler.go:534] Scale down status: unneededOnly=false lastScaleUpTime=2024-02-27 17:39:33.032517071 +0000 UTC m=-3594.093061754 lastScaleDownDeleteTime=2024-02-27 17:39:33.032517071 +0000 UTC m=-3594.093061754 lastScaleDownFailTime=2024-02-27 17:39:33.032517071 +0000 UTC m=-3594.093061754 scaleDownForbidden=false isDeleteInProgress=false scaleDownInCooldown=false

I0228 04:52:22.258545       1 scale_up.go:468] Best option to resize: 14b42c5d-e7e6-4c41-b638-5facb98b0a93
I0228 04:52:22.258602       1 scale_up.go:472] Estimated 1 nodes needed in 14b42c5d-e7e6-4c41-b638-5facb98b0a93
I0228 04:52:22.266675       1 scale_up.go:595] Final scale-up plan: [{14b42c5d-e7e6-4c41-b638-5facb98b0a93 1->2 (max: 3)}]
I0228 04:52:22.266915       1 scale_up.go:691] Scale-up: setting group 14b42c5d-e7e6-4c41-b638-5facb98b0a93 size to 2
I0228 04:52:22.267040       1 cloudstack_node_group.go:57] Increase Cluster : 14b42c5d-e7e6-4c41-b638-5facb98b0a93 by 1
I0228 04:52:22.267238       1 event_sink_logging_wrapper.go:48] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"kube-system", Name:"cluster-autoscaler-status", UID:"3e317689-2939-4a66-b764-b2bb938c433c", APIVersion:"v1", ResourceVersion:"75712", FieldPath:""}): type: 'Normal' reason: 'ScaledUpGroup' Scale-up: setting group 14b42c5d-e7e6-4c41-b638-5facb98b0a93 size to 2 instead of 1 (max: 3)
I0228 04:52:22.267350       1 client.go:169] NewAPIRequest API request URL:http://<IP_ADDRESS>:8080/client/api?apiKey=***&command=scaleKubernetesCluster&id=14b42c5d-e7e6-4c41-b638-5facb98b0a93&response=json&size=2&signature=***
I0228 04:52:22.297307       1 client.go:175] NewAPIRequest response status code:200
I0228 04:52:28.385682       1 reflector.go:536] k8s.io/client-go/informers/factory.go:134: Watch close - *v1.Node total 10 items received
I0228 04:52:32.324971       1 client.go:169] NewAPIRequest API request URL:http://<IP_ADDRESS>:8080/client/api?apiKey=***&command=queryAsyncJobResult&jobid=4e62a5a3-825c-435e-a6df-c22e756ee5e4&response=json&signature=***
I0228 04:52:32.346120       1 client.go:175] NewAPIRequest response status code:200
I0228 04:52:32.360171       1 client.go:110] Still waiting for job 4e62a5a3-825c-435e-a6df-c22e756ee5e4 to complete
I0228 04:52:33.993372       1 reflector.go:536] /home/djumani/lab/autoscaler/cluster-autoscaler/utils/kubernetes/listers.go:188: Watch close - *v1.Pod total 306 items received
I0228 04:52:42.328416       1 client.go:169] NewAPIRequest API request URL:http://<IP_ADDRESS>:8080/client/api?apiKey=***&command=queryAsyncJobResult&jobid=4e62a5a3-825c-435e-a6df-c22e756ee5e4&response=json&signature=***
I0228 04:52:42.357795       1 client.go:175] NewAPIRequest response status code:200
I0228 04:52:52.356394       1 client.go:110] Still waiting for job 4e62a5a3-825c-435e-a6df-c22e756ee5e4 to complete

➜  ~ k get nodes -A
NAME                     STATUS   ROLES           AGE   VERSION
gh-control-18debd77e18   Ready    control-plane   10h   v1.28.4
gh-node-18debd8440c      Ready    <none>          10h   v1.28.4
gh-node-18dee0e78ba      Ready    <none>          42s   v1.28.4

I notice @saffronjam used a regular user to deploy the CKS cluster, would it be related to the issue ?


kernel: work: fix schedule from running work

k_work_schedule() is supposed to be a no-op if the work item is
already scheduled or submitted: the previous schedule is left
unchanged.  The check incorrectly inhibited the schedule operation
when the work item was neither scheduled nor submitted, but was
running.
Fixes #33353

@dcpleung @nashif @andyross we need this merge so we unblock the k_work deprecation process described in #33104


Decreasing render time by refactoring nav

Overview and Problem Statement
As part of my H2 2021 Hackathon project, all of the existing documentation for the Billing Platform Team was migrated from our Confluence space and our individual repo wikis. This added 337 new files to the bigcommerce/documenation repo (including images) which greatly expanded the existing navigation structure.
As such, the render time on jekyll build was over 10 minutes and failed in CircleCi.
Proposed Resolutions
By implementing the following two changes, we can reduce the build time on the base theme and in the current documentation repo by a significant percentage.

Version
Repo
Build Time
Reduction

Before this PR
bigcommerce/just-the-docs
19.2057

With this PR
bigcommerce/just-the-docs
8.7828
-10.4229

Before this PR
bigcommerce/documenation
522.6779

With this PR
bigcommerce/documenation
47.8606
-474.8173

1. Reducing includes
In this bigcommerce/just-the-docs repo, the base render time for the theme was 20 seconds. It has been reduced down to 8 by directly embedding the content of _includes/nav/main.html into _layouts/default.html, which removed over 11,000 includes for both _includes/nav/links.html and _includes/nav/node.html.
Comparing base just-the-docs theme
Before on base theme:
Build Process Summary:

PHASE
TIME

RESET
0.0002

READ
0.2822

GENERATE
0.0000

RENDER
18.6084

CLEANUP
0.0170

WRITE
0.2979

----
----

TOTAL TIME
19.2057

Site Render Stats:

Filename
Count
Bytes
Time

_includes/nav/links.html
4483
7094.72K
29.204

_includes/nav/node.html
7791
5741.12K
27.235

_layouts/default.html
130
4378.38K
11.707

_includes/nav/main.html
130
2904.23K
10.854

_includes/nav/collection.html
650
2790.00K
10.646

_includes/nav/page.html
1226
0.00K
3.323

After on base theme
Build Process Summary:

PHASE
TIME

RESET
0.0003

READ
0.3254

GENERATE
0.0000

RENDER
5.8484

CLEANUP
0.0144

WRITE
2.5943

----
----

TOTAL TIME
8.7828

Site Render Stats:

Filename
Count
Bytes
Time

_layouts/default.html
130
4268.21K
3.466

_includes/nav/collection.html
650
2784.59K
2.601

_includes/nav/page.html
650
0.00K
1.657

_layouts/vendor/compress.html
130
3934.54K
1.111

_includes/nav/links.html
650
2784.59K
0.621

2. Caching
I discovered that trying to cache the nav actually increased build time (I can't figure out what's going on there) but by cacheing the next two most included files of _includes/nav/collection.html and _includes/nav/page.html I was able to reduce the build time by another 5 seconds.

Gotchas
By doing this caching, it no longer seems to render the TOC at the bottom of each page with children. I think this is a minimal loss, since the side nav is still there, but open to feedback.
Proof

Thanks for doing this, @bc-johnhebron !

Worried that we're starting to get out of date
https://github.com/bigcommerce/documentation/pull/522
https://github.com/bigcommerce/documentation/blob/master/Gemfile#L10
Can we get this merged and go back to master so that we can try to keep updated

closing this out as I don't have time to make sure this still works. I'm also not sure if we are using the hackathon project around speeding up build times, but if so, then this is redundant.


Remove tmp files in SeBa?

The directory src/amuse/community/seba/src/include/star/tmp/ seems to be redundant (tested by deleting it and rebuilding/testing), can this directory be removed?

fixed by #203


243/footer link

Add footer link to our manual JS.

(already pushed to cannabis.ca.gov)

whoops wrong branch!


Master

I don't known if "*args, **kwargs" is needed for HMConnect start/stop function...

*args and **kwargs is needed at least for stop. A month ago it wasn't, but HA started calling the provieded stop-function with a parameter ("ha-stop-event" or something like that). Because of that the server-thread wasn't shutdown and HA wouldn't restart.
Besides that everything works for me.


Show PlantUML syntax errors properly

This package works great (and is simple) in colab.research.google.com (it's how I'm using it).
But, whenever there's a mistake in the PlantUML source, there's a traceback that is not useful, instead of a helpful error that PlantUML's server is giving.
For example, in the following cell, note is mistyped with a space in the middle: no te which is a syntax error:
%%plantuml

@startuml
Alice->Bob: Authentication Request
no te right of Bob: Bob thinks about it
Bob->Alice: Authentication Response
@enduml

If I try that on the PlantUML server, I see this info:

If I try it in colab, I get this:
---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
[<ipython-input-61-2db41d0c2e9c>](https://localhost:8080/#) in <module>()
----> 1 get_ipython().run_cell_magic('plantuml', '', '\n@startuml\nAlice->Bob: Authentication Request\nno te right of Bob: Bob thinks about it\nBob->Alice: Authentication Response\n@enduml')

4 frames
[/usr/lib/python3.7/subprocess.py](https://localhost:8080/#) in check_call(*popenargs, **kwargs)
    361         if cmd is None:
    362             cmd = popenargs[0]
--> 363         raise CalledProcessError(retcode, cmd)
    364     return 0
    365

CalledProcessError: Command '['plantweb', '--format', 'auto', 'e7a6b5e9-9c57-49b2-9bde-1ae3e8bbadbd.uml']' returned non-zero exit status 1.

In my case,
'@enduml' after two spaces works!


Add DPG: Papers with Code

Automatic addition of a new digital public good submitted through the online form available at https://digitalpublicgoods.net/submission

@lacabra archiving Papers with Code as we no longer accepting open source tools that are primarily used to support developers; focus has shifted to tools that are specifically oriented around supporting SDGs

@nathanbaleeta: I disagree on this one. This is not an "open source tool": it has been nominated as content and data and thus the excluding argument is highly debatable. This is a content collection that advances SDG4 and I would argue SDG9 instead of the SDG8 that they claim in their nomination entry. If their implied analogy with Wikipedia is legitimate, then this would be a valid submission for content+data

Checklist for conducting technical review against DPG Standard:

[x] Clear Ownership
[x] Platform Independence
[x]  Documentation
[ ] Mechanism For Extracting Data
[x] Do No Harm By Design
[ ] Data Privacy & Security
[ ] Adherence to Standards & Best Practices
[x] Adherence to Privacy and Applicable Laws
[x] Inappropriate & Illegal Content
[x] Protection From Harassment
[x] Development & Deployment countries

Digital solutions that are no longer active, or do not provide the required documentation needed for review, will be moved into the archive hence moving Papers with Code to archives as per the archiving policy. Thanks.


fix bug when parsing older system profiles

Older system profiles did not have a captured_date, so we would
instead return the created_on timestamp from the DB. However, we
were returning this as a datetime and not as a string. This resulted
in issues since sometimes captured_date would be a datetime, and
sometimes it would be a string.
This commit moves the time conversion code into the model so it's
consistent. It also simplifies the captured_date method.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@80a4f45). Click here to learn what that means.
The diff coverage is 20%.

@@            Coverage Diff            @@
##             master      #22   +/-   ##
=========================================
  Coverage          ?   55.04%
=========================================
  Files             ?        9
  Lines             ?      218
  Branches          ?        0
=========================================
  Hits              ?      120
  Misses            ?       98
  Partials          ?        0

Impacted Files
Coverage Δ

historical_system_profiles/views/v0.py
36% <0%> (ø)

historical_system_profiles/models.py
43.47% <21.42%> (ø)

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 80a4f45...89d70fc. Read the comment docs.


Don't merge! Regression PR perf testing without metadata validation

Docs Build status updates of commit 7960289:
:clock10: Pending: waiting for processors (20 builds ahead of you)
:warning: Docs Build is busy, currently there are 20 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 7960289:
:warning: Validation status: warnings

File
Status
Preview URL
Details
Dependent Files

developer/TestingPullRequest.md
:warning:Warning
View
Details

developer/TestingPullRequest.md

[Warning] Metadata with following name(s) are not allowed to be set in Yaml header, or as file level metadata in docfx.json, or as global metadata in docfx.json: content_type. They are generated by Docs platform, so the values set in these 3 places will be ignored. Please remove them from all 3 places to resolve the warning.
[Warning] the value invalid_type is undefined for metadata content_type
Line 7: [Warning] Invalid file link:(~/../nonexisted1.md).
Line 8: [Warning] Invalid file link:(~/../nonexisted2.md).
Line 9: [Warning] Invalid file link:(~/../nonexisted3.md).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Append to end of a csv already in progress?

Initial Check

If the issue is a request please specify that it is a request in the title (Example: [REQUEST] more features). If this is a question regarding 'twint' please specify that it's a question in the title (Example: [QUESTION] What is x?). Please only submit issues related to 'twint'. Thanks.

Make sure you've checked the following:

[X] Python version is 3.6;
[X] Updated Twint with pip3 install --upgrade -e git+https://github.com/twintproject/twint.git@origin/master#egg=twint;
[X] I have searched the issues and there are no duplicates of this issue/question/request.

Description of Issue
After about 10 minutes of scraping, twint crashes.  How can set it to pick up where it left off when I restart the script?
Error
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py", line 94, in Response
    async with session.get(url, ssl=False, params=params) as response:
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client.py", line 1005, in __aenter__
    self._resp = await self._coro
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client.py", line 497, in _request
    await resp.start(conn)
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/client_reqrep.py", line 844, in start
    message, payload = await self._protocol.read()  # type: ignore  # noqa
  File "/usr/local/lib/python3.6/dist-packages/aiohttp/streams.py", line 588, in read
    await self._waiter
concurrent.futures._base.CancelledError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "makeCSV__Base.py", line 22, in <module>
    twint.run.Search(c)
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py", line 201, in Search
    run(config)
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py", line 153, in run
    get_event_loop().run_until_complete(Twint(config).main())
  File "/usr/lib/python3.6/asyncio/base_events.py", line 473, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py", line 140, in main
    await self.tweets()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py", line 97, in tweets
    await self.Feed()
  File "/usr/local/lib/python3.6/dist-packages/twint/run.py", line 40, in Feed
    response = await get.RequestUrl(self.config, self.init, headers=[("User-Agent", self.user_agent)])
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py", line 58, in RequestUrl
    response = await Request(_url, params=params, connector=_connector, headers=headers)
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py", line 89, in Request
    return await Response(session, url, params)
  File "/usr/local/lib/python3.6/dist-packages/twint/get.py", line 95, in Response
    return await response.text()
  File "/usr/local/lib/python3.6/dist-packages/async_timeout/__init__.py", line 45, in __exit__
    self._do_exit(exc_type)
  File "/usr/local/lib/python3.6/dist-packages/async_timeout/__init__.py", line 92, in _do_exit
    raise asyncio.TimeoutError
concurrent.futures._base.TimeoutError

Environment Details
Pythonn 3.6 on Ubuntu 18.04

You have to specify the --resume/config.Resume option passing the id of the last tweet
Might happen that Twint finds "hidden tweets" and so breaks. In this case you have to specify a date-range (with since and until) and move from window to window
You could even just search via Twitter Advanced Search and pick ids from there

Yeah, config.Resume =  worked.

Great to see it working!


Move purchases to rabbitmq

And remove Kafka connections...

related https://github.com/artsy/gravity/pull/10815

Merging since Gravity changes are deployed

👍 thanks


Use internal hassio token to authenticate MMM-HASS

I added a feature in upstream MMM-HASS to use the hassiotoken that hass.io add-ons have access to to authenticate MMM-HASS to the internal API. This PR makes MMM-HASS work out-of-the-box (assuming sensor names match), instead of users needing to configure an api password.

This was added to my fixed copy of this repository.
Please go here: https://github.com/bouwew/hassio-addons-1
and try it.


Build fails: error executing 'git rev-parse --abbrev-ref=loose HEAD': No such file or directory (os error 2)

What type of bug is this?
Other
What subsystems are affected?
Other
Minimal reproduce step
command:
cd /usr/ports/databases/greptimedb/work/greptimedb-0.6.0; /usr/bin/env CARGO_FREEBSD_PORTS_SKIP_GIT_UPDATE=1 /usr/bin/env XDG_DATA_HOME=/usr/ports/databases/greptimedb/work  XDG_CONFIG_HOME=/usr/ports/databases/greptimedb/work  XDG_CACHE_HOME=/usr/ports/databases/greptimedb/work/.cache  HOME=/usr/ports/databases/greptimedb/work TMPDIR="/usr/ports/databases/greptimedb/work" PATH=/usr/local/libexec/ccache:/usr/ports/databases/greptimedb/work/.bin:/home/yuri/.cargo/bin:/home/yuri/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin PKG_CONFIG_LIBDIR=/usr/ports/databases/greptimedb/work/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe  -fstack-protector-strong -fno-strict-aliasing "  CPP="cpp" CPPFLAGS=""  LDFLAGS=" -fstack-protector-strong " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing  " CCACHE_DIR="/tmp/.ccache" BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444" CARGO_HOME=/usr/ports/databases/greptimedb/work/cargo-home  CARGO_BUILD_JOBS=7  CARGO_BUILD_TARGET=x86_64-unknown-freebsd  CARGO_TARGET_DIR=/usr/ports/databases/greptimedb/work/target  CARGO_TARGET_X86_64_UNKNOWN_FREEBSD_LINKER="cc"  RUSTC=/usr/local/bin/rustc  RUSTDOC=/usr/local/bin/rustdoc  RUSTFLAGS=" -C link-arg=-fstack-protector-strong" RUST_BACKTRACE=1 LIBGIT2_SYS_USE_PKG_CONFIG=1 ZSTD_SYS_USE_PKG_CONFIG=1 CARGO_PROFILE_RELEASE_LTO="true"  CARGO_PROFILE_RELEASE_PANIC="abort"  CARGO_PROFILE_RELEASE_CODEGEN_UNITS=1 /usr/local/bin/cargo build  --manifest-path /usr/ports/databases/greptimedb/work/greptimedb-0.6.0/Cargo.toml  --verbose  --verbose   --release
What did you expect to see?
n/a
What did you see instead?
[servers 0.6.0] cargo:rustc-env=RUSTC_VERSION=rustc 1.76.0-nightly (37b2813a7 2023-11-24) (built from a source tarball)
[servers 0.6.0] thread 'main' panicked at /wrkdirs/usr/ports/databases/greptimedb/work/greptimedb-0.7.0-nightly-20240115-95-gb889d57b32/cargo-crates/build-data-0.1.5/src/lib.rs:630:64:
[servers 0.6.0] called `Result::unwrap()` on an `Err` value: "error executing 'git rev-parse --abbrev-ref=loose HEAD': No such file or directory (os error 2)"
[servers 0.6.0] stack backtrace:
[servers 0.6.0]    0: rust_begin_unwind
[servers 0.6.0]    1: core::panicking::panic_fmt
[servers 0.6.0]    2: core::result::unwrap_failed
[servers 0.6.0]    3: core::result::Result<T,E>::unwrap
[servers 0.6.0]    4: build_data::set_GIT_BRANCH
[servers 0.6.0]    5: build_script_build::main
[servers 0.6.0]    6: core::ops::function::FnOnce::call_once
[servers 0.6.0] note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: failed to run custom build command for `servers v0.6.0 (/wrkdirs/usr/ports/databases/greptimedb/work/greptimedb-0.7.0-nightly-20240115-95-gb889d57b32/src/servers)`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_RELEASE_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

Caused by:
  process didn't exit successfully: `CARGO=/usr/local/bin/cargo CARGO_CFG_OVERFLOW_CHECKS='' CARGO_CFG_PANIC=unwind CARGO_CFG_RELOCATION_MODEL=pic CARGO_CFG_TARGET_ABI='' CARGO_CFG_TARGET_ARCH=x86_64 CARGO_CFG_TARGET_ENDIAN=little CARGO_CFG_TARGET_ENV='' CARGO_CFG_TARGET_FAMILY=unix CARGO_CFG_TARGET_FEATURE=fxsr,sse,sse2 CARGO_CFG_TARGET_HAS_ATOMIC=16,32,64,8,ptr CARGO_CFG_TARGET_HAS_ATOMIC_EQUAL_ALIGNMENT=16,32,64,8,ptr CARGO_CFG_TARGET_HAS_ATOMIC_LOAD_STORE=16,32,64,8,ptr CARGO_CFG_TARGET_OS=freebsd CARGO_CFG_TARGET_POINTER_WIDTH=64 CARGO_CFG_TARGET_VENDOR=unknown CARGO_CFG_UNIX='' CARGO_ENCODED_RUSTFLAGS='-Clink-arg=-fstack-protector-strong' CARGO_FEATURE_TESTING=1 CARGO_MANIFEST_DIR=/wrkdirs/usr/ports/databases/greptimedb/work/greptimedb-0.7.0-nightly-20240115-95-gb889d57b32/src/servers CARGO_PKG_AUTHORS='' CARGO_PKG_DESCRIPTION='' CARGO_PKG_HOMEPAGE='' CARGO_PKG_LICENSE=Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=servers CARGO_PKG_README='' CARGO_PKG_REPOSITORY='' CARGO_PKG_RUST_VERSION='' CARGO_PKG_VERSION=0.6.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=6 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' DEBUG=false HOST=x86_64-unknown-freebsd LD_LIBRARY_PATH='/wrkdirs/usr/ports/databases/greptimedb/work/target/release/deps:/wrkdirs/usr/ports/databases/greptimedb/work/target/release:/usr/local/lib/rustlib/x86_64-unknown-freebsd/lib' NUM_JOBS=6 OPT_LEVEL=3 OUT_DIR=/wrkdirs/usr/ports/databases/greptimedb/work/target/x86_64-unknown-freebsd/release/build/servers-a6776311a97f263b/out PROFILE=release RUSTC=/usr/local/bin/rustc RUSTC_LINKER=cc RUSTDOC=/usr/local/bin/rustdoc TARGET=x86_64-unknown-freebsd /wrkdirs/usr/ports/databases/greptimedb/work/target/release/build/servers-2dc98a4fd314015f/build-script-build` (exit status: 101)

What operating system did you use?
FreeBSD 14.0
What version of GreptimeDB did you use?
rev. b889d57b32
Relevant log output and stack trace
No response

It seems that you download the GreptimeDB sources directly instead of clone via Git?
Perhaps we should find a fallback when the sources are built without Git info, or we throw a meaningful error message.

Package builders don't use git clones because sources need to be fingerprinted for build reproducibility and security.

Good point. I'm preparing a patch to fix this.
Thanks for your report!

@yurivict you may verify https://github.com/GreptimeTeam/greptimedb/pull/3309.
Out of curiosity, what are you trying to build on FreeBSD with GreptimeDB? I saw your recent reports all about this topic :D

Package builders

But without these build data the produced artifacts may not show version properly. Said 0.7.0 greptimedb-bin may produce "unknown" with --version.

I am trying to create the FreeBSD port for greptimedb.

--version should be handled in some other way.

I am trying to create the FreeBSD port for greptimedb.

Cool. Please let me know when it is published and I can create a shout-out for you.

--version should be handled in some other way.

Yeah. I'm proposing a metafile generation solution in #3309, or fallback to envvar so that you can configure in the package script (I'm unfamiliar with FreeBSD but AUR works in this way).

@tisonkun

Cool. Please let me know when it is published and I can create a shout-out for you.

I've added the FreeBSD port: https://cgit.freebsd.org/ports/tree/databases/greptimedb
Maybe you can add it to the list of systems where GreptimeDB is available?
The command to install it is: pkg install greptimedb

Tweet is sent at - https://twitter.com/Greptime/status/1759594238399173066

Maybe you can add it to the list of systems where GreptimeDB is available?

It's filed as https://github.com/GreptimeTeam/docs/issues/809. We should find a way to add such information. If you know how other projects display this info, welcome to share links there.

@tisonkun
qBittorrent for example lists the FreeBSD port here.
Some projects are even detecting the type of OS from the browser and display the relevant info automatically based on the OS, but I can't find an example now.


Netflix error M7375

Caused by some conflict when setting the playhead, conflicts with Netflix for some odd reason...

It is probably because we are trying to .play() right after setting the playhead on an unbuffered area


SLU Multistage - add bert encoder

Hi, this PR will cover:

[x] adding Bert encoder to SPbrain
[x] use Bert encoder for SLU

@aheba, what's the status of this PR?


improve snippetcompiler path_process_env performance

Description
SnippetCompilationTest._patch_process_env() does not actually change venvs, it just updates the mocking of the active process env. As a result, calling notify_change should not be required. Additionally, getting rid of the symlink makes sure each compile uses the same path for the shared venv, which makes venv switching simpler.
Self Check:
Strike through any lines that are not applicable (~~line~~) then check the box

[ ] Attached issue to pull request
[ ] Changelog entry
[ ] Type annotations are present
[ ] Code is clear and sufficiently documented
[ ] No (preventable) type errors (check using make mypy or make mypy-diff)
[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Correct, in line with design
[ ] End user documentation is included or an issue is created for end-user documentation (add ref to issue here: )

Reviewer Checklist:

[ ] Sufficient test cases (reproduces the bug/tests the requested feature)
[ ] Code is clear and sufficiently documented
[ ] Correct, in line with design

Processing this pull request

Merged into branches master in 131bf1a43c0739f301d10b5e97ce7ebe02311fc9


feat(menu): migrate to spectrum-tokens + add new features

Description

How and where has this been tested?

How this was tested:
Browser(s) and OS(s) this was tested with:

Screenshots

To-do list

[ ] If my change impacts other components, I have tested to make sure they don't break.
[ ] If my change impacts documentation, I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have tested these changes in Windows High Contrast mode.
[ ] I have updated any relevant storybook stories and templates.
[ ] If my change(s) include visual change(s), a designer has reviewed and approved those changes.

[ ] This pull request is ready to merge.

Released<EMAIL_ADDRESS>

New beta published<EMAIL_ADDRESS>

New beta published<EMAIL_ADDRESS>

New beta published<EMAIL_ADDRESS>


zlib and X!Tandem

I am trying to search some Thermo Raw files using X!Tandem in OpenMS (Knime version). For this, I need to convert the files to mzML. I tried using ThermoRawFileParser:
"...ThermoRawFileParser.exe" -i=".../MyThermoRawFile.raw" -b=".../MyOutputFile.mzML\" -f=1
However, the XTandemAdapter node then gives me the following error:
"Fatal error: unsupported CODEC used for mzML peak data (CODEC type=zlib compression)"
I also tried -f=2 but whether the data is indexed or not does not seem to make a difference (incidentally, which would you recommend by default?)
Is there a way to use a different conversion CODEC than zlib is used? Adding the -p argument makes as expected for a much larger mzML file, but I get instead this error from XTandemAdapter:
"Error: Profile data provided but centroided MS2 spectra expected. To enforce processing of the data set the 'force' flag." I could try the recommendation, but of course this would massively inflate the data size.

Hi,
I'll add a flag next week that disables the zlib compression. I'll keep you posted.
Best regards,
Niels

Thank you so much for your prompt answer (I love how reactive people can be
in this community!)
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Virus-free.
www.avast.com
https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#m_-8565490318716961285_DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
On Fri, Jun 28, 2019 at 4:39 PM Niels Hulstaert<EMAIL_ADDRESS>wrote:

Hi,
I'll add a flag next week that disables the zlib compression. I'll keep
you posted.
Best regards,
Niels
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/compomics/ThermoRawFileParser/issues/51?email_source=notifications&email_token=ABSHV4OXJ4YVPVIPLECGBHDP4YPCJA5CNFSM4H4DEITKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODY2IJAA#issuecomment-506758272,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABSHV4OXSVGYJ3XLCKJSIF3P4YPCJANCNFSM4H4DEITA
.

Thank you for trying out the parser! I've released a new version (1.1.9) with a -z flag that disables the zlib compression. Could you give it a go?

Hi Niels,
Sorry for the delay in answering, I did not find the time to test the new
version until now. So far so good, I have successfully converted 5
different Raw files to mzML with zlib off and am now able to feed them into
X!Tandem on OpenMS without the previous error. Thanks a lot!
Best,
Armel
On Tue, Jul 2, 2019 at 5:42 PM Niels Hulstaert<EMAIL_ADDRESS>wrote:

Thank you for trying out the parser! I've released a new version (1.1.9)
with a -z flag that disables the zlib compression. Could you give it a go?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/compomics/ThermoRawFileParser/issues/51?email_source=notifications&email_token=ABSHV4MEI6ZLNQL3PGEGPJDP5NZONA5CNFSM4H4DEITKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODZBWINA#issuecomment-507733044,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABSHV4M7XK2YE66TXVDM3DLP5NZONANCNFSM4H4DEITA
.


Automate process of updating aws-sdk-go dependency

As different AWS service APIs evolve and add new functionality, the aws-sdk-go source repository gets updated/regenerated. We should automatically upgrade our aws-sdk-go dependency when new releases are pushed out.
Things needed:

[ ] Github Action step that runs periodically (nightly?) that, if it notices a new release of aws-sdk-go, automatically updates go.mod, creates a git commit and a PR with the updated dependency.

I'd suggest using dependabot with the allow option to create a PR on periodic basis instead of relying on creating some GH Action workflow.

對不起，請問這個程式是否可以遠端監控？

@r198809200 would you mind phrasing your query in English, I want to make sure we understand unambiguously what you mean?

PR #279 was created today by Dependabot. Seems like we're good to close this issue.


Fixed typos that was causing errors in react notes editor

Fixes #1527
Hi there! Found and fixed some typos that were causing the error in #1527. The notes on the React app should be updating dynamically now, but I do want to flag that it it's not triggering the Slack notification flag at the top of the page, which is maybe a separate bug.
P.S. Sorry for my branch name -- will follow your convention for my next PRs!

Excellent find! The fix work well when I test it. Will be in the next deploy.


parallelize image rotations

Hello Davis,
This PR is about parallelizing add_image_rotations which takes an unreasonable amount of time on my machine, while there are a lot of idling CPUs.
I'm not sure about some low level arbitrary choices I've made and implementation details, so please, get back to me. I'll remove the debug prints and all that while treating your feedback.
Many thanks!

Thanks for the PR.
This should probably use dlib::parallel_for().  And yes, please remove unrelated things like print statements and other stuff.  A PR should be focused and clean.

Hello again,
I think that fixes what you asked for :)
Hope it helps!

Looks good, thanks for the PR :)


Fix: Setting the HTTP status during the Encoder setup is insufficient

Sorry, my previous PR had a bug 😅
Setting the HTTP status during the Encoder setup is insufficient: we must also set it when actually encoding the output (as concrete output values might have different statuses).

Could you also add a test for this fix (original bug reproducer)?

@vearutop I added an explicit test for this.
I don't think this linter complaint is valid, though. This is something that is fixed in golangci-lint 1.51.2...