Fix: can't open tag with tag name with % characters

Details

This PR will fix the bug: can't open tag with tag name with % special characters.

Fixed Issues

$ https://github.com/Expensify/App/issues/42549
PROPOSAL: https://github.com/Expensify/App/issues/42549#issuecomment-2133351642
Tests

Open app
Click Account Settings > Workspace > More Features > tags
Create a tag name !@#$%^&(&^%$#@ (it seems to be the `%' that throws the error'
Save the Tag > Click on the tag again - notice the "uh-oh, something went wrong!" error
Observe that the user should access to tag setting page

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/170341821/3be58a41-2e1f-4735-97fb-429a38ac65e3

Android: mWeb Chrome

https://github.com/Expensify/App/assets/170341821/9a3302c9-382f-4ed8-ab8f-bd79f9f62b85

iOS: Native

https://github.com/Expensify/App/assets/170341821/9c2076b4-8458-4f93-bb52-d2b7e2392eb7

iOS: mWeb Safari

https://github.com/Expensify/App/assets/170341821/7f2366d2-4958-496b-a3cd-9191b8ac765c

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/170341821/e534a9d2-6941-481b-8bc2-ba0b7282dbce

MacOS: Desktop

https://github.com/Expensify/App/assets/170341821/1e31ca49-6c1e-46a6-8db6-1951fe829230

I have read the CLA Document and I hereby sign the CLA

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

@truph01 Welcome you to the first PR, the code changes look good but please complete Detail, Test Step, link in the PR description

@truph01 Thanks for the quick update. Please update video evidence for all platform

@DylanDylann @lakchote Sorry but what is the next step here?

Waiting for @lakchote to review this PR

@lakchote Can you help review this PR?

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.83-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Changelog for XRTpy version 0.5

Building the changelog for XRTpy version 0.5.

Could you delete the files in changelog/ besides README.md?

Missing changes should be (TBD):

https://github.com/HinodeXRT/xrtpy/pull/281


Fix broken link issues in docs

Fixes #494
Corrected a couple broken links in the docs.

Thanks @anchal-agrawal!


[Question] How to suspend/pause a worker?

Hi,
I'm trying to replace my old "fork" stuff with TaskIt.
I cannot find how to suspend a worker, for example I have this code:
thread := [ "blabla" ] fork.
"...."
thread suspend.
"...."
thread resume.

I'm using TKTWorker new to replace fork but there is no way to pause/resume :/
This code don't work:
thread := TKTWorker new.
thread schedule:[ "blabla" ].
thread start.
"..."
thread stop.
"..."
thread start. "here my thread is not restarted

Any solution?

Hi @labordep, for using Taskit you should not control the worker like this.
The worker is a process that will be used to run the tasks that we send to it. You don't need to instantiate a new worker, there is a default one in the system. This is set up to have 4 threads (so there will be 4 tasks running at the same time).
A task we can see it as a single operation.
If you want to run something that executes many times you need to define a TKTService (the TKTParametrizableService is nicer, as you can pass a block to it and a name).
If you want to have a single shot it is good to have something like
[ | x |
	x := Time now printString.

	('Start:' , x) traceCr.
	2 seconds wait.
	('End:', x) traceCr. ] schedule

As you can see, if you execute it many times, you will have 4 concurrents in a default P13 image:
10 timesRepeat: [
	[ | x |
	x := Time now printString.

	('Start:' , x) traceCr.
	2 seconds wait.
	('End:', x) traceCr. ] schedule].

That is because the configured pool has 4 threads for running tasks.
In the other side, if you have a recurrent task, it is better to define it as a service:
serv := TKTParameterizableService new
	step: [ ('MyService: ' , Time now printString) traceCr ];
	name: 'MyService';
	stepDelay: 1 second;
	start;
	yourself.

serv stop.

With this you can control a single step to do recurrently, and the delay between steps.
If you need a task to return a value you should use the future API:
f := [
     'Start ' traceCr.
     (1 to: 100) collect: [ :i |
		     ZnEasy get: 'http://www.google.com' asZnUrl ] ] future
	     onFailureDo: [ :e | e debug ];
	     onSuccessDo: [ :x | x traceCr ];
	     yourself.

If you need a more complex example, please tell me.
Cheers,
Pablo

Thanks Pablo may be we should do a pass on the "documentation" and add such an example.

Thanks @tesonep,
If I understand, for controlling a work with a play/pause I can use:
serv := TKTParameterizableService new
	step: [ "my stuff here" ];
	name: 'MyService';
	stepDelay: 1 second;
	start;
	yourself.

"..."
serv stop.
"..."
serv start.
"...etc...."

?

Yes, @labordep, That is the idea

Hi @tesonep, I test it and it looks good!
At the beginning I haven't understood that a TKTParameterizableService is in fact a loop task.
This is fine because I can simplify this code:
[
		        | random |
		        random := Random new.
		        [ true ] whileTrue: [
			        1 second wait.
			        objects do: [ :o |
				        o radiusInMeters: random next * 200000.
				        element updateObject: o ] ] ]

with this code:

[
| random |
random := Random new.
objects do: [ :o |
o radiusInMeters: random next * 200000.
element updateObject: o ] ]


Conversion issue with 3.0, when and Swift

Pretty new to swift so this could be pretty simple, but am struggling to get a simple when working with 2 custom functions that return promises.  They have the following signatures:
func a() -> Promise<Bool> { }
func b() -> Promise<Void> { }

when(a(), b()) { aResponse, bResponse in

}

I get Cannot convert value of type 'Promise<Bool>' to expected argument type 'Promise<_>'
Any pointers?

Works for me:

Think I missed the then... had to be something simple :), thanks for your help


Update to 1.21

Hey ! Can you update it to 1.21 ? :-)

By Thursday or Friday, hopefully :D

Wonderful !

I have updated the mod to 1.21, hope you'll enjoy it! :)

Fantastic, Thank you !


Readthedocs build trigger does not work

webhook from github to rtd fails - maybe need to recreate rtd project (I only changed the repo url of the existing PyMbs project)

GitHub integration needed to be added manually in rtd admin settings


[CSX] Detector data appears saved but is not accessible

We collected a long series of data from the fccd at CSX using the general pattern ct([fccd]), and discovered while analyzing the data that some portion of the collected data, about 1/4 or so, was not actually saved. The exact script we ran was:
def pty_combine(dx,nx,dz,nz):

    dets = [fccd]
    yield from mv(fccd.exposure,(0.3,0.5,1),gamma, 2.0, delta, 110.403, theta, 55.3914, pgm.energy, 851.10)

    #nx, nz = (11, 21)
    xv = np.linspace(nanop.bx.user_readback.value-dx, nanop.bx.user_readback.value+dx, nx)
    zv = np.linspace(nanop.bz.user_readback.value-dz, nanop.bz.user_readback.value+dz, nz)
    #xgrid, zgrid = np.meshgrid(xv, zv)

    for xpos in xv:
        yield from mv(nanop.bx,xpos)
        for zpos in zv:
            yield from mv(nanop.bz,zpos)

            yield from nap(1)
            # First out then on the beamstop
            yield from mv(fccd.exposure,(0.3,0.5,10))
            yield from mv(gamma,0.5)
            yield from nap(1)
            yield from ct(dets, md={'on beamstop':False})

            yield from mv(gamma,2.0)
            yield from mv(fccd.exposure,(5,0.5,2))
            yield from nap(3)
            yield from ct(dets, md={'on beamstop':True})
            yield from mv(fccd.exposure,(0.3,0.5,10))

    yield from mv(fccd.exposure,(5,0.5,30))
    yield from ct_dark_all()
    yield from mv(fccd.exposure,(0.3,0.5,120))
    yield from ct_dark_all()

And to analyze the data, we use the following pattern:
import numpy as np
from databroker import Broker
from csx.utils import get_fastccd_images
db = Broker.named('csx')
im = get_fastccd_images(db[114539], (db[115106],db[115107],db[115108]))
print(np.array(im))

Expected Behavior
We would expect all images to be collected and able to be read out as arrays
Current Behavior
For the affected scans - for example, 114539, the image object is created but fails whenever data from inside it is asked to be read out. Interestingly, only images related to the second ct() function in the above script are affected, those relating to the first are not. As mentioned before, the issue only affects approximately 1/4 of the images.

Can you please include the traceback?

@tacaswell can we close this given absence of a response?


Same Location Orders not picked up together in VRP

Hi,
I ran into a problem while using vehicle routing library.
I have 10 orders-C1,C2....C10. Order C1,C2,C3 have same location and another orders have different locations.
Sequence in which vehicle is picking orders -C1,C2,C4  and then C3. Why it is not picking C1,C2 ,C3 (as three orders have same location) together and then go to C4. Time  window is large for all orders so there should be any problem related to time window constraint.
What constraint should I add so that a vehicle picks same location orders together.
Thanks.

Hi,
Any suggestion or reference will be very helpful.
Thanks.

That may not necessarily be wrong, depending on where the next Node served is located.
Are you sure ArcCost between any pair in 1,2,3 is absolutely 0 ?
Some combination of  PickDrop and forcing same CumulVar("distance") could work


Documentation of SLEN

I would like to suggest rewriting section 4 so the effects of SLEN are more apparent to programmers and architects. I'm only recommending a change of presentation for clarity, not a change in the spec.
Currently, section 4 is organized by different values of LMUL. The value of LMUL is dynamically changed by a program, so programmers must jump from section to section to understand data layout.
In contrast, SLEN is a static architectural parameter: once set, it is fixed for the implementation. By rearranging the subsections in section 4, based upon different examples of SLEN, it will be more clear to both programmers and architects: jump to the relevant section for a specific SLEN, and see how data should be laid out. Within each subsection, the different values of LMUL (and SEW) can be enumerated as examples.

Can you make a PR?

I can work on that but it will take time. I would like to get an ok that this is a good reorg to do before undertaking the effort.

It sounds OK to me, though I think having one place where different SLEN are shown next to each other is important to see the effect of SLEN.

Agreed. I can leave in an extra subsection to show impact of selecting different SLEN values (although it would be redundant from perspective of a spec, it would have merit as a Note or other annotation).

When we improve the SLEN text, we might also document this code sequence that computes SLEN: https://github.com/riscv/riscv-v-spec/issues/233

Text was rewritten with change in mapping.

Not only was mapping changed, the meaning of SLEN changed drastically.
There has been a level of confusion as a result. Perhaps we can refer to the new SLEN as hSLEN or SLENH for horizontal striping vs the original striping to support vertical register stacking?


Charts - Prevalence

work in progress
This needs a lot of cleanup, just wanted to see the charts to double-check the numbers.

We are going with https://github.com/covid-projections/covid-projections/pull/1019 - closing!


Create conditions on permissions with com.amazonaws.services.sqs.model.AddPermissionRequest

I recently tried to create permissions for an sns topic to publish to sqs queues, unfortunately I couldn't figure out how to do this with the provided API.  The AddPermissionRequest class doesn't appear to support the same level of granular configuration as the UI or raw rest api, or even manual request configuration.  I also couldn't find any examples on the web.
val permissionRequest = new AddPermissionRequest()
permissionRequest.setQueueUrl(queueUrl)
permissionRequest.setActions(Seq("sqs:SendMessage"))
permissionRequest.setLabel(s"$queueName-SendMessage")
permissionRequest.setAWSAccountIds(Seq(accountId))
//No methods for configuring conditions
val permissionResult = sqsClient.addPermission(permissionRequest)

I was able to do this on the UI, as shown here: http://docs.aws.amazon.com/sns/latest/dg/SendMessageToSQS.html
Am I missing something? Is this a new feature request?

Moving issue to aws-sdk-java


Introduce pending_commit

This PR does a few things.
CoreGroup

It disallows the processing of own commit messages via stage_commit. Instead, clients now have to process the StagedCommit resulting from their own create_commit calls directly via merge_staged_commit.
It gets rid of the logic in stage_commit that covers own commits (and some code that was unused as a consequence). There is probably more to be cleaned up, but I'll leave that as a follow-up (see below).
It fixes all tests that use the core_group interface to implement the flow described above. In some cases, this means that a new party had to be added to the group, because alice can't process her own commits anymore to test things.

MlsGroup

It stores the StagedCommit resulting from the most recent call to create_commit in the MlsGroup as the pending_commit and implements functions for inspecting and clearing it.
It forces the consumer to clear the pending commit explicitly before creating another commit. If this is not done, commit-creating functions will return an error.
If a commit is merged (be it the pending one, or one from another group member), the pending_commit is cleared.
It introduces a merge_pending_commit function that merges the pending_commit and consumes it in the process.
It fixes all tests using the MlsGroup interface. As with the CoreGroup, this means that in some cases, an extra group member had to be added.

TODOs

[x] explicit tests for the new API flows in MlsGroup

Follow-ups

[ ] clean up unneeded code/logic. For example, apply_own_update_path doesn't need to return a KPB anymore.

Thanks for the review!
I'm not sure if mixing the two state variables (is_active and pending_commit) is a good idea. It helps us combine two checks in the beginning of the committing functions, but otherwise the states partially overlap. For example, a group is active with or without a pending commit. Also, it's conceivable that there's still a pending commit when the client is removed from the group (although we could probably clear it at that point). Not a super strong opinion here, but I'd prefer to keep the states separated at the cost of an extra explicit check at the start of the committing functions.

On the logic side: Shouldn't we also reject the creation of proposals when there is a pending commit? Generating application messages might still be ok I guess.

Yes, that makes sense. I'll put it in.


Update stable version in repo from 0.0.0 to 2.13.10

Think about adding version 2.13.10 to stable repository.
Version: stable=0.0.0 (0 days old) => latest=2.13.10 (41 days old)
Installs: stable=0 (0%), latest=419 (16.76%), total=2500
Click to use developer portal
Click to edit
Do not close this issue manually as a new issue will be created if condition for update still exists.
Please drop a comment if any reason exists which blocks updating to version 2.13.10 at this time.
Note: This is an automatically generated message and not personally authored by bluefox!
@mcm1957 for evidence

2.13.10 is broken and cannot be released to stable.


Fix auto-checking of romcal builds made by Travis

Related #63 #66 #67
Currently, the builds a not auto-checked by Travis. The reason is currently unknown, though suspect that the Travis configuration is outdated.

I've managed to run and pass Travis CI tests on my fork: jarosz/romcal. I've requested to activate it on romcal/romcal as well, but I believe it has to be accepted by repo owner: @pejulian

Well, I think that @pejulian should grant us (or at least one of us) the access to Travis. However, I think that he uses a personal account for that, so it might be better create something like and organisation account for us all. However, I have no idea if Travis has such a feature.

It's working now. Closing issue.


ReferenceError: AdminDirectory is not defined

Expected Result: When running function "syncTeamVacationCalendar" for first time, authorize access then see synced appointments in log.
Actual Result: When running function "syncTeamVacationCalendar" for first time, received error: ReferenceError: AdminDirectory is not defined (line 128, file "Code")
Description:
-Both API's are enabled.
Code.gs (I redacted our actual Calendar ID):
var TEAM_CALENDAR_ID = 'REDACTED';
var KEYWORDS = ['vacation', 'ooo', 'out of office'];
var MONTHS_IN_ADVANCE = 3;

// The maximum script run time under Apps Script Pro is 30 minutes; this setting
// will be used to report when the script is about to reach that limit.
var MAX_PRO_RUNTIME_MS = 29 * 60 * 1000;

/**
 * Look through the domain users' public calendars and add any
 * 'vacation' or 'out of office' events to the team calendar.
 */
function syncTeamVacationCalendar() {
  // Define the calendar event date range to search.
  var today = new Date();
  var futureDate = new Date();
  futureDate.setMonth(futureDate.getMonth() + MONTHS_IN_ADVANCE);
  var lastRun = PropertiesService.getScriptProperties().getProperty('lastRun');
  lastRun = lastRun ? new Date(lastRun) : null;

  // Get the list of users in the domain.
  var users = getDomainUsers();

  // For each user, find events having one or more of the keywords in the event
  // summary in the specified date range. Import each of those to the team
  // calendar.
  var count = 0;
  var timeout = false;
  for (var i = 0; i < users.length; i++) {
    if (isTimeUp(today, new Date())) {
      timeout = true;
      break;
    }
    var user = users[i];
    var username = user.split('@')[0];
    KEYWORDS.forEach(function(keyword) {
      var events = findEvents(user, keyword, today, futureDate, lastRun);
      events.forEach(function(event) {
        event.summary = '[' + username + '] ' + event.summary;
        event.organizer = {
          id: TEAM_CALENDAR_ID
        };
        event.attendees = [];
        Logger.log('Importing: %s', event.summary);
        try {
          Calendar.Events.import(event, TEAM_CALENDAR_ID);
          count++;
        } catch (e) {
          Logger.log(
                'Error attempting to import event: %s. Skipping.', e.toString());
        }
      });
    });
  }
  PropertiesService.getScriptProperties().setProperty('lastRun', today);
  Logger.log('Imported ' + count + ' events');
  if (timeout) {
    Logger.log('Execution time about to hit quota limit; execution stopped.');
  }
  var executionTime = ((new Date()).getTime() - today.getTime()) / 1000.0;
  Logger.log('Total execution time (s) : ' + executionTime); ;
}

/**
 * In a given user's calendar, look for occurrences of the given keyword
 * in events within the specified date range and return any such events
 * found.
 * @param {string} user the user's primary email String.
 * @param {string} keyword the keyword String to look for.
 * @param {Date} start the starting Date of the range to examine.
 * @param {Date} end the ending Date of the range to examine.
 * @param {Date} opt_since a Date indicating the last time this script was run.
 * @return {object[]} an array of calendar event Objects.
 */
function findEvents(user, keyword, start, end, opt_since) {
  var params = {
    q: keyword,
    timeMin: formatDate(start),
    timeMax: formatDate(end),
    showDeleted: true
  };
  if (opt_since) {
    // This prevents the script from examining events that have not been
    // modified since the specified date (that is, the last time the
    // script was run).
    params['updatedMin'] = formatDate(opt_since);
  }
  var results = [];
  try {
    var response = Calendar.Events.list(user, params);
    results = response.items.filter(function(item) {
      // Filter out events where the keyword did not appear in the summary
      // (that is, the keyword appeared in a different field, and are thus
      // is not likely to be relevant).
      if (item.summary.toLowerCase().indexOf(keyword) < 0) {
        return false;
      }
      // If the event was created by someone other than the user, only include
      // it if the user has marked it as 'accepted'.
      if (item.organizer && item.organizer.email != user) {
        if (!item.attendees) {
          return false;
        }
        var matching = item.attendees.filter(function(attendee) {
          return attendee.self;
        });
        return matching.length > 0 && matching[0].status == 'accepted';
      }
      return true;
    });
  } catch (e) {
    Logger.log('Error retriving events for %s, %s: %s; skipping',
        user, keyword, e.toString());
    results = [];
  }
  return results;
}

/**
 * Return a list of the primary emails of users in this domain.
 * @return {string[]} An array of user email strings.
 */
function getDomainUsers() {
  var pageToken;
  var page;
  var userEmails = [];
  do {
    page = AdminDirectory.Users.list({
      customer: 'my_customer',
      orderBy: 'givenName',
      maxResults: 100,
      pageToken: pageToken,
      viewType: 'domain_public'
    });
    var users = page.users;
    if (users) {
      userEmails = userEmails.concat(users.map(function(user) {
        return user.primaryEmail;
      }));
    } else {
      Logger.log('No domain users found.');
    }
    pageToken = page.nextPageToken;
  } while (pageToken);
  return userEmails;
}

/**
 * Return an RFC3339 formated date String corresponding to the given
 * Date object.
 * @param {Date} date a Date.
 * @return {string} a formatted date string.
 */
function formatDate(date) {
  return Utilities.formatDate(date, 'UTC', 'yyyy-MM-dd\'T\'HH:mm:ssZ');
}

/**
 * Compares two Date objects and returns true if the difference
 * between them is more than the maximum specified run time.
 *
 * @param {Date} start the first Date object.
 * @param {Date} now the (later) Date object.
 * @return {boolean} true if the time difference is greater than
 *     MAX_PROP_RUNTIME_MS (in milliseconds).
 */
function isTimeUp(start, now) {
  return now.getTime() - start.getTime() > MAX_PRO_RUNTIME_MS;
}`

Logs display:
[20-06-08 11:04:49:725 PDT] ReferenceError: AdminDirectory is not defined
    at getDomainUsers(Code:128:5)
    at syncTeamVacationCalendar(Code:22:15)

I am closing this issue - I had correctly done all steps but the API's:
-Admin Directory API
-Calendar API
did not enable after I closed the dialog. I went back in to find the sliders set to off. Issue was resolved after.


[UI] Convert MesheryResultDialog from class based component to functional component

Current Behavior
MesheryResultDialog is a class-based component.
Desired Behavior
MesheryResultDialog should be a  functional component
Implementation
Convert all the Class-based components to new updated functional components. It is important here to convert a class-based component to a functional component you may need to convert some functions as well. Check if the function is used in other components or not.
Also, make sure to use the hooks while converting them. For example, you need to covert withNotify with useNotification, useRouter hook. Please check if a hook for functional components is available and use that.
Here is a quick blog that will help you get started with : Link

Contributor Guides and Handbook

🎨 Wireframes and designs for Meshery UI in Figma (open invite)
🖥 Contributing to Meshery UI
🙋🏾🙋🏼 Questions: Discussion Forum and Community Slack

@laviedegeorge comment on this issue to get assigned.

@Rajdip019 I would love to work on this issue.


Support non-continuous source IP's

This PR resolves #338 by implementing the ability to send from non-continuous source IP ranges.
Ex: -S <IP_ADDRESS>,<IP_ADDRESS>-<IP_ADDRESS>,<IP_ADDRESS> will set source IP addresses to one of {<IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, and <IP_ADDRESS>} for each packet sent but notably not <IP_ADDRESS> and <IP_ADDRESS>.
I implemented this by parsing the addresses given into a static array of size 256. I don't see a use case where someone would use more than 256 source addresses but this is a design decision I wanted to point out as a limitation that I am open to change.
I also created a utility.c and utility.h in src/ for better readability. This could all be moved to lib/util.c except for the single function that adds IP addresses to the array. I was unsure of how to best implement that for readability.

I'm generally fine with this PR, but I don't think we accurately capture the IPs used for scanning in the metadata file now. If there's a non-contiguous range of IPs, first and last don't have much meaning. We should output the set of IP addresses that's used.

This should not get merged yet. Source IP addresses are reversed. Fix coming soon, and I'll also fix up the metadata output.

@zakird this should be good to go now


Not able to install with the given instructions.

Not able to install with the given instructions.
I see only DashboardBeta, Applications and Random Data Menu.
Do we have any wiki? or detailed documentation for this

Hi @rkhapre,
Not sure which steps you follow, but the following worked for me:

git clone https://github.com/DataTorrent/malhar-angular-dashboard.git
cd malhar-angular-dashboard
bower install
npm install
gulp bower:demo (optional)
gulp serve


Finalizing osp_exportParams

osp_exportParams now also returns all of the info from the QM table, in a nicer, automated fashion. Based on the order of function calls in RunOspreyJob, I added the export call to the end of OsperyOverview so that everything will be done regarding the fit before exporting. I added the relevant code to OspreyJob.m and the example job*.m files under exampledata. It should now be able to run seamlessly.
There are two parts to the opts variable as follows:
opts.exportParams.flag      = 1;                        % Options:    0 (no, default), 1 (yes) opts.exportParams.path      = '/path/to/save/';          % String to save directory
Actual content changes in the job files occurs around lines 145-150.
Unless something in the possible_keys list needs updating or additional variables need to be exported, this should be one of the last pull requests.

Hi @JohnLaMaster,
That looks great! Thanks for integrating this so nicely.
I have added all possible naming combinations of the fit struct to the auxiliary function ( I think you asked for them in the last pull request). These will only appear in older Osprey versions or in the MRSI branch.
Best,
Helge


Subresource status failing to stop infinite loop

Bug Report

What did you do?
A clear and concise description of the steps you took (or insert a code snippet).
As documented here, in order to avoid CR status changes causing an infinite loop of the reconcile() function, we should make the status block a subresource, following steps outlined here.
However, we have found that even though we successfully set the CRD status attribute as a subresource, we still see infinite looping of reconcile() when status is changed. A simple example to reproduce, using the canonical PodSet operator demo, would have the following types spec:
// +kubebuilder:subresource:status
// +kubebuilder:resource:path=podsets,scope=Namespaced
type PodSet struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   PodSetSpec   `json:"spec,omitempty"`
	Status PodSetStatus `json:"status,omitempty"`
}

which results in a CRD with a subresource, as expected:
...
spec:
  group: app.example.com
  names:
    kind: PodSet
    listKind: PodSetList
    plural: podsets
    singular: podset
  scope: Namespaced
  subresources:
    status: {}
  validation:
...

However, placing the following code in the controller reconcile() function:
// NOTE: the 'Updated' timestamp will change each time reconcile() is called
// If status is not treated correctly as a subresource
instance.Status.Updated = time.Now().String()
err = r.client.Status().Update(context.TODO(), podSet)
if err != nil {
	reqLogger.Error(err, "failed to update the podSet")
	return reconcile.Result{}, err
}

This updates the 'Updated' timestamp on the status object every time reconcile() is called. According to the documentation, this change to the status object should not trigger a call of the reconcile() function because the status object is a subresource, thus avoiding an infinite loop. However, the infinite loop occurs. Is the documentation wrong, is there a bug, or am I missing something?
What did you expect to see?
When setting the 'status' attribute as a subresource of a CRD, I should be able to update status in the reconcile() function without re-invoking the reconcile() loop.
What did you see instead? Under which circumstances?
When updating the status attribute, even though its a subresource, I see an infinite loop of the reconcile() function.
Environment

operator-sdk version: v0.15.2

go version: 1.13.8

Kubernetes version information: 1.16.2

Kubernetes cluster kind: openshift

Are you writing your operator in ansible, helm, or go?  go

Possible Solution

Additional context
I've created a functional reproduction of the issue in this repo

This is the way Kubernetes control loops are intended to work. Whenever a change occurs in your CR, it will trigger an event to reconcile your CR again. To solve your problem, you can either use a predicate (e.g. the GenerationChangedPredicate that ignores status updates), or you can make sure you only ever update your CR status Updated field when your reconcile loop actually makes a change to converge the current state to the desired state.
We'll take an action to see if some documentation needs to be updated to make this more clear.

@joelanford  I'm very confused then. The docs specifically say:

Under normal circumstances, If we were updating our resource every time we execute the reconcile cycle, this would trigger an update event which in turn would trigger a reconcile cycle in an endless loop.

^ For this reason, Status should be modeled as a subresource as explained here.
Is this not specifically saying that this is not the way the control loop should work when updating a subresource (as opposed to a normal resource)?

@cacois Yeah that seems misleading at best.
Status updates, even if using status subresources, bump the generation on CRs. So while changing the status as a subresource doesn’t directly change the main resource, it does for all intents and purposes because the Kubernetes control plane will make that change automatically.
I’ll look into getting that doc updated.

@joelanford Thanks for the explanation! I assume those docs aren't open source, otherwise I'd offer to help. I'll look into the other options you provided.
Thanks again!

let me try to clarify. By using status as subresource, when we upgrade just the status with this syntax: r.Status().Update(context.Background(), instance), the operator still receives an update event.
However in this update event the resource version field is not changed. So if we have a predicate that discards update events where the resource version field is not changed we avoid an infinite loop.

@raffaelespazzoli Thanks for the clarification. I was getting mixed up in my previous comments.
So TL;DR (and to make sure my understanding is now correct) :slightly_smiling_face:

Using status subresource prevents resourceVersion from getting bumped in the main resource.
Status changes do not affect generation (even if not using the status subresource)
Updates to status subresources still do cause watchers to see an update event for the main resource.
To reconcile events where only the spec has changed, use the GenerationChangedPredicate

point #2 is wrong. generation is increased by the apiserver every time something changes in a resource (but not if it changes in a subsresource).


[PDI-16559] - Multiple step-meta classes generate AIOOB after MDI

@mchen-len-son - can you or @kolinus review this please? Thanks.

Build Completed
:x: This pull request has errors. They will need to be addressed before it can be accepted. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -B -fn -f 'pom.xml' -pl 'engine,plugins/gpload/core,core,plugins/core/impl,plugins/google-analytics/core' -P '!assemblies' -amd clean install && mvn -B -f 'pom.xml' -pl 'engine,plugins/gpload/core,core,plugins/core/impl,plugins/google-analytics/core' -P '!assemblies' -amd site

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'engine,plugins/gpload/core,core,plugins/core/impl,plugins/google-analytics/core' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  core/src/main/java/org/pentaho/di/core/util/Utils.java
  core/src/test/java/org/pentaho/di/core/util/UtilsTest.java
  engine/src/main/java/org/pentaho/di/trans/steps/combinationlookup/CombinationLookupMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/dimensionlookup/DimensionLookupMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/excelinput/ExcelInputMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/memgroupby/MemoryGroupByMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/mysqlbulkloader/MySQLBulkLoaderMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/replacestring/ReplaceStringMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/sort/SortRowsMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/sortedmerge/SortedMergeMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/update/UpdateMeta.java
  engine/src/main/java/org/pentaho/di/trans/steps/valuemapper/ValueMapperMeta.java
  engine/src/test/java/org/pentaho/di/trans/steps/combinationlookup/CombinationLookupMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/dimensionlookup/DimensionLookupMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/excelinput/ExcelInputMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/memgroupby/MemoryGroupByMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/mysqlbulkloader/MySQLBulkLoaderMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/replacestring/ReplaceStringMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/sort/SortRowsMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/sortedmerge/SortedMergeMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/update/UpdateMetaTest.java
  engine/src/test/java/org/pentaho/di/trans/steps/valuemapper/ValueMapperMetaTest.java
  plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/analyticquery/AnalyticQueryMeta.java
  plugins/core/impl/src/test/java/org/pentaho/di/trans/steps/analyticquery/AnalyticQueryMetaTest.java
  plugins/google-analytics/core/src/main/java/org/pentaho/di/trans/steps/googleanalytics/GaInputStepMeta.java
  plugins/google-analytics/core/src/test/java/org/pentaho/di/trans/steps/googleanalytics/GaInputStepMetaTest.java
  plugins/gpload/core/src/main/java/org/pentaho/di/trans/steps/gpload/GPLoadMeta.java
  plugins/gpload/core/src/test/java/org/pentaho/di/trans/steps/gpload/GPLoadMetaTest.java

Newly Broken Tests:
org.pentaho.di.trans.steps.update.UpdateMetaTest.testCommitCountVar:
:red_circle: java.lang.NullPointerException
java.lang.NullPointerException
	at org.pentaho.di.trans.steps.update.UpdateMetaTest.setUp(UpdateMetaTest.java:101)

org.pentaho.di.trans.steps.update.UpdateMetaTest.testUseDefaultSchemaName:
:red_circle: java.lang.NullPointerException
java.lang.NullPointerException
	at org.pentaho.di.trans.steps.update.UpdateMetaTest.setUp(UpdateMetaTest.java:101)

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.core.util.Utils

Branch Change:  + 22.73%
Complexity Change:  + 15.20%
Instruction Change:  + 38.90%
Line Change:  + 44.41%
Method Change:  + 13.33%

org.pentaho.di.trans.steps.analyticquery.AnalyticQueryMeta

Branch Change:  + 2.17%
Complexity Change:  + .44%
Instruction Change:  + 2.17%
Line Change:  + 2.14%
Method Change:  + .97%

org.pentaho.di.job.entries.evaluatetablecontent.JobEntryEvalTableContent

Branch Change:  + 1.01%
Complexity Change:  + 1.06%
Instruction Change:  + .17%

org.pentaho.di.job.entries.ftpsget.JobEntryFTPSGet

Branch Change:  + .52%
Complexity Change:  + .56%
Instruction Change:  + .07%

org.pentaho.di.job.entries.getpop.MailConnectionMeta

Branch Change: -1.00%:small_red_triangle_down:
Complexity Change: -1.41%:small_red_triangle_down:
Instruction Change: -.30%:small_red_triangle_down:

org.pentaho.di.trans.steps.calculator.CalculatorMetaFunction

Branch Change:  + 8.70%
Complexity Change:  + 3.03%
Instruction Change:  + .75%
Line Change:  + .89%

org.pentaho.di.trans.steps.combinationlookup.CombinationLookupMeta

Branch Change:  + 1.07%
Complexity Change:  + .64%
Instruction Change:  + .70%
Line Change:  + .59%
Method Change:  + .40%

org.pentaho.di.trans.steps.constant.ConstantMeta

Instruction Change:  + .10%

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Branch Change: -1.92%:small_red_triangle_down:
Complexity Change: -1.69%:small_red_triangle_down:
Instruction Change: -.17%:small_red_triangle_down:

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change: -.11%:small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change:  + 3.43%
Complexity Change:  + 1.96%
Instruction Change:  + 1.39%
Line Change:  + .95%
Method Change: -.83%:small_red_triangle_down:

org.pentaho.di.trans.steps.excelinput.ExcelInputMeta

Branch Change:  + .53%
Complexity Change:  + .72%
Instruction Change:  + .13%
Line Change:  + .22%
Method Change:  + .28%

org.pentaho.di.trans.steps.fieldsplitter.FieldSplitterMeta

Branch Change: -2.07%:small_red_triangle_down:
Complexity Change: -2.06%:small_red_triangle_down:
Instruction Change:  + 1.42%
Line Change:  + .81%
Method Change:  + .18%

org.pentaho.di.trans.steps.groupby.GroupByMeta

Branch Change: -1.04%:small_red_triangle_down:
Complexity Change: -1.05%:small_red_triangle_down:

org.pentaho.di.trans.steps.ifnull.IfNullMeta

Branch Change:  + 2.00%
Complexity Change:  + 1.89%
Instruction Change:  + .17%

org.pentaho.di.trans.steps.insertupdate.InsertUpdateMeta

Instruction Change: -.05%:small_red_triangle_down:

org.pentaho.di.trans.steps.ldapoutput.LDAPOutputMeta

Instruction Change: -.06%:small_red_triangle_down:

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change:  + 1.53%
Complexity Change:  + 1.37%
Instruction Change:  + .75%
Line Change:  + 1.15%
Method Change:  + .46%

org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoaderMeta

Branch Change:  + 1.49%
Complexity Change: -.52%:small_red_triangle_down:
Instruction Change:  + 1.14%
Line Change:  + .94%
Method Change:  + .40%

org.pentaho.di.trans.steps.pgbulkloader.PGBulkLoaderMeta

Branch Change:  + 1.79%
Complexity Change:  + .98%
Instruction Change:  + .23%
Line Change:  + .29%

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Branch Change: -2.50%:small_red_triangle_down:
Complexity Change:  + 2.71%
Instruction Change: -1.50%:small_red_triangle_down:
Line Change: -2.59%:small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change: -.08%:small_red_triangle_down:

org.pentaho.di.trans.steps.sort.SortRowsMeta

Branch Change:  + 1.75%
Complexity Change: -.22%:small_red_triangle_down:
Instruction Change:  + 2.09%
Line Change:  + 1.55%
Method Change:  + .76%

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Branch Change:  + 2.43%
Complexity Change: -1.20%:small_red_triangle_down:
Instruction Change:  + 2.00%
Line Change:  + 1.90%
Method Change:  + 1.58%

org.pentaho.di.trans.steps.synchronizeaftermerge.SynchronizeAfterMergeMeta

Branch Change:  + 2.35%
Complexity Change:  + 2.44%
Instruction Change:  + 1.04%
Line Change:  + 1.07%
Method Change:  + .19%

org.pentaho.di.trans.steps.textfileinput.TextFileInputMeta

Branch Change: -.53%:small_red_triangle_down:

org.pentaho.di.trans.steps.uniquerows.UniqueRowsMeta

Instruction Change:  + .18%

org.pentaho.di.trans.steps.update.UpdateMeta

Branch Change: -8.18%:small_red_triangle_down:
Complexity Change: -1.06%:small_red_triangle_down:
Instruction Change: -5.27%:small_red_triangle_down:
Line Change: -6.03%:small_red_triangle_down:
Method Change: -1.57%:small_red_triangle_down:

org.pentaho.di.trans.steps.valuemapper.ValueMapperMeta

Branch Change:  + 2.17%
Complexity Change: -1.75%:small_red_triangle_down:
Instruction Change:  + 1.42%
Line Change:  + 1.11%
Method Change:  + .77%

org.pentaho.di.www.TransformationMap

Branch Change:  + 4.55%
Complexity Change:  + 3.08%
Instruction Change:  + 5.64%
Line Change:  + 5.38%

org.pentaho.di.trans.steps.googleanalytics.GaInputStepMeta

Branch Change:  + .30%
Complexity Change: -1.22%:small_red_triangle_down:
Instruction Change:  + .65%
Line Change:  + .34%
Method Change:  + .16%

org.pentaho.di.trans.steps.gpload.GPLoadMeta

Branch Change:  + 3.56%
Complexity Change:  + 1.86%
Instruction Change:  + 1.19%
Line Change:  + .81%
Method Change:  + .24%

org.pentaho.di.trans.steps.salesforceupdate.SalesforceUpdateMeta

Instruction Change: -.17%:small_red_triangle_down:

License header violations

:heavy_exclamation_mark: Copyright year is not the current year on core/src/test/java/org/pentaho/di/core/util/UtilsTest.java. Found 2016. Was expecting 2017

:heavy_exclamation_mark: Copyright year is not the current year on engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java. Found 2016. Was expecting 2017

Checkstyle violations
The code submitted is not complying with one or more of our guidelines. To perform these checks locally, please use this tool.
/home/buildguy/project/core/src/main/java/org/pentaho/di/core/util/Utils.java

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 189 Column: 13

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 189 Column: 49

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 191 Column: 28

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 191 Column: 71

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 216 Column: 13

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 216 Column: 49

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 218 Column: 28

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 218 Column: 71

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 243 Column: 13

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 243 Column: 49

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 245 Column: 28

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 245 Column: 71

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 270 Column: 13

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 270 Column: 49

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 272 Column: 28

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 272 Column: 71

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 297 Column: 13

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 297 Column: 49

:heavy_exclamation_mark: '(' is not followed by whitespace. at Line: 299 Column: 28

:heavy_exclamation_mark: ')' is not preceded with whitespace. at Line: 299 Column: 71

Build Completed
:fire: This pull request has some issues. It would be preferable to fix them in order for it to be just perfect. See below for more details. Some links are also available below for further assistance in addressing those issues.
Build Commands
mvn -B -fn -f 'pom.xml' -pl 'engine,core' -P '!assemblies' -amd clean install && mvn -B -f 'pom.xml' -pl 'engine,core' -P '!assemblies' -amd site

Cleanup Commands
mvn -B -f 'pom.xml' -pl 'engine,core' -P '!assemblies' -amd build-helper:remove-project-artifact

Changed files
  core/src/main/java/org/pentaho/di/core/util/Utils.java
  engine/src/test/java/org/pentaho/di/trans/steps/update/UpdateMetaTest.java

Unit test coverage change
These statistics help you identify how your changes have affected the coverage of the following files. If a file is not in this list, then its coverage was not affected by your changes. To get some help interpreting these metrics, please refer to Jacoco's documentation.
org.pentaho.di.core.util.Utils

Branch Change:  + 22.73%
Complexity Change:  + 15.20%
Instruction Change:  + 38.90%
Line Change:  + 44.41%
Method Change:  + 13.33%

org.pentaho.di.trans.steps.analyticquery.AnalyticQueryMeta

Branch Change:  + 2.17%
Complexity Change:  + .44%
Instruction Change:  + 2.17%
Line Change:  + 2.14%
Method Change:  + .97%

org.pentaho.di.job.entries.evaluatetablecontent.JobEntryEvalTableContent

Branch Change: -1.01%:small_red_triangle_down:
Complexity Change: -1.06%:small_red_triangle_down:
Instruction Change: -.17%:small_red_triangle_down:

org.pentaho.di.job.entries.ftpsget.JobEntryFTPSGet

Branch Change:  + .52%
Complexity Change:  + .56%
Instruction Change:  + .07%

org.pentaho.di.trans.steps.combinationlookup.CombinationLookupMeta

Branch Change:  + 1.07%
Complexity Change:  + .64%
Instruction Change:  + .70%
Line Change:  + .59%
Method Change:  + .40%

org.pentaho.di.trans.steps.constant.ConstantMeta

Instruction Change: -.10%:small_red_triangle_down:

org.pentaho.di.trans.steps.datagrid.DataGridMeta

Branch Change:  + 1.92%
Complexity Change:  + 1.69%
Instruction Change:  + .17%

org.pentaho.di.trans.steps.dbproc.DBProcMeta

Instruction Change: -.11%:small_red_triangle_down:

org.pentaho.di.trans.steps.dimensionlookup.DimensionLookupMeta

Branch Change:  + 3.12%
Complexity Change:  + 1.96%
Instruction Change:  + 1.33%
Line Change:  + 1.18%
Method Change:  + .19%

org.pentaho.di.trans.steps.excelinput.ExcelInputMeta

Branch Change:  + .53%
Complexity Change:  + .72%
Instruction Change:  + .13%
Line Change:  + .22%
Method Change:  + .28%

org.pentaho.di.trans.steps.excelwriter.ExcelWriterStepMeta

Branch Change:  + 1.28%
Complexity Change:  + .78%
Instruction Change:  + .04%

org.pentaho.di.trans.steps.fieldsplitter.FieldSplitterMeta

Branch Change: -2.07%:small_red_triangle_down:
Complexity Change: -2.06%:small_red_triangle_down:
Instruction Change:  + 1.42%
Line Change:  + .81%
Method Change:  + .18%

org.pentaho.di.trans.steps.ldapoutput.LDAPOutputMeta

Instruction Change:  + .06%

org.pentaho.di.trans.steps.memgroupby.MemoryGroupByMeta

Branch Change: -.98%:small_red_triangle_down:
Complexity Change: -1.49%:small_red_triangle_down:
Instruction Change:  + .57%
Line Change:  + .64%
Method Change:  + .46%

org.pentaho.di.trans.steps.mysqlbulkloader.MySQLBulkLoaderMeta

Branch Change:  + 1.49%
Complexity Change: -.52%:small_red_triangle_down:
Instruction Change:  + 1.14%
Line Change:  + .94%
Method Change:  + .40%

org.pentaho.di.trans.steps.replacestring.ReplaceStringMeta

Branch Change: -2.50%:small_red_triangle_down:
Complexity Change:  + 2.71%
Instruction Change: -1.50%:small_red_triangle_down:
Line Change: -2.59%:small_red_triangle_down:

org.pentaho.di.trans.steps.rowgenerator.RowGeneratorMeta

Instruction Change:  + .08%

org.pentaho.di.trans.steps.sort.SortRowsMeta

Branch Change:  + 1.75%
Complexity Change: -.22%:small_red_triangle_down:
Instruction Change:  + 2.09%
Line Change:  + 1.55%
Method Change:  + .76%

org.pentaho.di.trans.steps.sortedmerge.SortedMergeMeta

Branch Change:  + 2.43%
Complexity Change: -1.20%:small_red_triangle_down:
Instruction Change:  + 1.82%
Line Change:  + 1.90%
Method Change:  + 1.58%

org.pentaho.di.trans.steps.synchronizeaftermerge.SynchronizeAfterMergeMeta

Branch Change:  + 2.35%
Complexity Change:  + 2.44%
Instruction Change:  + 1.00%
Line Change:  + 1.07%
Method Change:  + .19%

org.pentaho.di.trans.steps.uniquerows.UniqueRowsMeta

Instruction Change:  + .18%

org.pentaho.di.trans.steps.update.UpdateMeta

Branch Change:  + 1.38%
Complexity Change:  + .62%
Instruction Change:  + 1.41%
Line Change:  + 1.13%
Method Change:  + .39%

org.pentaho.di.trans.steps.valuemapper.ValueMapperMeta

Branch Change:  + 2.17%
Complexity Change: -1.75%:small_red_triangle_down:
Instruction Change:  + 1.42%
Line Change:  + 1.11%
Method Change:  + .77%

org.pentaho.di.www.TransformationMap

Branch Change: -4.55%:small_red_triangle_down:
Complexity Change: -3.08%:small_red_triangle_down:
Instruction Change: -5.64%:small_red_triangle_down:
Line Change: -5.38%:small_red_triangle_down:

org.pentaho.di.trans.steps.googleanalytics.GaInputStepMeta

Branch Change:  + .30%
Complexity Change: -1.22%:small_red_triangle_down:
Instruction Change:  + .65%
Line Change:  + .34%
Method Change:  + .16%

org.pentaho.di.trans.steps.gpload.GPLoadMeta

Branch Change:  + 2.64%
Complexity Change:  + 1.06%
Instruction Change:  + 1.15%
Line Change:  + .81%
Method Change:  + .24%

org.pentaho.di.trans.steps.salesforceinsert.SalesforceInsertMeta

Instruction Change:  + .15%

org.pentaho.di.trans.steps.salesforceupsert.SalesforceUpsertMeta

Instruction Change:  + .14%


fix: Skip invalid diffs

:tada: This PR is included in version 1.0.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[CORTX 2022 Hackathon] - STM32-CORTX Integration Notebook

Describe your changes in brief
Added a notebook that will showcase basic functionality of STM32 integration with CORTX.
Changes

[X] Why is this change required? What problem does it solve? It solves the data storage problem that IoT infrastructure will present.
[ ] If proposing a new change then please raise an issue first

How Has This Been Tested? (Optional)

[ ] Please describe in detail how you tested your changes.
[ ] Include details of your testing environment, and the tests you ran to
[ ] How your change affects other areas of the code, etc.

Screenshots (if appropriate)
Checklist

[ ] tested locally
[X] added new dependencies
[X] updated the docs
[ ] added a test

@novium258 I fixed the changes you requested
@mukul could you please merge this integration?


provisioning service for M3

In order to let more than one enclave operate on the state of a contract, the state encryption key needs to be known to all enclaves (and only to them)
Hyperledger Sawtooth solved this problem by partially trusting provisioning services
These PS maintain secret shares for each contract and only provide these shares to registered enclaves.
Each contract defines a set of PS that provide secret shares (shamir) for their state encryption key
The enclave queries each PS to get all shares ( or M-of-N) and reconstructs the symmetric state encryption key.

Will probably become obsolete as the state encryption key will be distributed over a secure channel between the enclaves. The enclaves will trust each other by performing a mutual RA.

agreed, but let's first wait for permission to modify milestones.


Production Infrastructure docs

Background
IPFS/libp2p projects provide own infrastructure for enabling their users to learn the introductory concepts first and experiment with its functionalities.
These infrastructure pieces should not be used in production and only for experimentation. This issue should track the creation of several documents to guide users on the road from experimenting to production.
Proposal
Create an INFRASTRUCTURE.md document with guides for setting up own infrastructure for each type of deployment needs, such as:

[ ] webrtc-star signalling servers
[ ] delegate routers
[ ] relay server nodes
[ ] rendezvous server nodes

References:

https://github.com/libp2p/js-libp2p/pull/507
https://github.com/libp2p/js-libp2p/pull/706
https://discuss.libp2p.io/t/cant-connect-to-webrtc-star-with-ssl/522
https://github.com/ipfs/js-ipfs/issues/2779

cc @jacobheun

The components mentioned in this stack have been deprecated or are discouraged from use. Please explore:

https://github.com/libp2p/js-libp2p/tree/master/packages/transport-webrtc
https://cid.contact/

as substitutes


Port the iCE40 CLB to Verilog and generate the pb_type from it

@daveshah1 created a tool for generating Verilog to Routing XML files from verilog.
The goal is to eventually have fully simulatable Verilog descriptions of all the actual hardware (as opposed to the verilog macros for instantiating hardware). We have been working on this for the Artix 7 and we should do the same for the iCE40 hardware.

@jhol this isn't a high priority at the moment but something we should look at eventually.

I think a few more features, in particular support for generating num_pb from Verilog may be needed for this to work, but it should be doable.

This is an interesting concept - the idea of being able to throw arbitrary FPGA Verilog into VPR sounds quite appealing. But also I get a strong sense of YAGNI/KISS about it.
It would be cool if you could make it work, but I'm not convinced that it's really going to work as seamlessly as we need, because there seems to be a bit of an impedance mismatch between the information present in Verilog, and the inputs to VPR.
The arch XML format contains 4 key things:

List of BLIF models
Description of the pb_types
Routing description
Tile layout

Verilog is only going to help with 1 and part of 2.
There will need to be a lot of additional XML included in for the rest of the information.
For 2, a lot of the "art" of architecture XML, is generating a structure that sidesteps VPR's various quirks. It will be quite hard to make a general purpose Verilog to pb_type conversion step. I have a feeling that there will be a large number of edge cases which have to be supported in principle, but it's impossible to know whether that code will pay off until it is tested with a wider selection of FPGAs. The alternative is a half-arsed conversion algorithm, but this will simply break for any new FPGAs we add.
I don't think it's possible to properly describe the requirements of a Verilog to pb_type converter at this time.
As you know, I advocate simply translating the XML+XSLT code into Python. The main issue with the arch XML is the repetitious nature of the pb_type and routing description XML. Whatever approach we take, it should aim to boost the "information density" of the architecture description - like a compression algorithm.
The true description of the ice40 internal structure could be described in words and pseudo-code in just a few pages of paper, so the format we choose to use should roughly equate to this.
As I showed in this proof of concept...
https://github.com/jhol/icestorm/blob/vtr-py/icebox/vtr.py
...just converting the XML to Python yields great gains in information density. Simply being able to wrap all repetitions up in for loops and functions, means the code never states a piece of information more than once.
This code makes an attempt at all 4 of the things described above, and comes out at less than 400-LOC, including comments.
In my opinion, the way forward is to take the XML+XSLT code and translate it into any popular scripting language. For the iCE40, this would take at most 2-days - probably could be done in 1-day. Then once the conversion is complete, any common patterns between iCE40 and 7-series can be factored out into a framework library. Then over time, as support more FPGAs is added, even more common patterns will emerge, and the framework can become get more featureful.
Once a decent number of FPGAs is supported there may be an appetite for further improving the information density by converting parts of the description into a domain-specific language - that language could be Verilog, or some other pre-existing or bespoke language might be more suitable.
The nice thing about what I'm laying out is that the task can be done in easy incremental stages without committing to implement a complex solution before the requirements are fully understood.
Any thoughts? Agree? Disagree?


Contributor licence agreement for Quest Bank

At the end of some modules you are asked to complete a quest.
It is not clear under what licence contributions are made. There should be a notice beside the Post Comment button that says all comments posted are contributed under some licence or waiver.
If people contribute via their work at the supplied URL, then they can apply their licence on that site.

This is in progress. I am waiting a final decision on the certification content to be CC BY or CC BY-SA and then need to update quest bank to be in sync. Flagging for closing later

This seems out of date.

TBH this repo should be closed, archived, deleted. It was for an infrastructure approach to the certificates that was never used.

@cogdog thanks, good to know! is that also true for these repos?
https://github.com/creativecommons/cc-cert-gov
https://github.com/creativecommons/cc-cert-edu
https://github.com/creativecommons/cc-cert-lib

Yes! The other ones I worked with are already archived, e,g. https://github.com/cc-archive/cc-cert-core-hugo


F 470 refactor db querie project resolver

related to #470

@FatemeGhasemi  Thanks for your effort , as I couldn't review this PR on time and now we have lots of conflicts, I think we can close this PR and not merge it