Any chance RedisCluster can be published as a milestone release with 1.7.0-M1 ?

Any chance RedisCluster can be published as a milestone release with 1.7.0-M1 ? Or is it too raw at this point?

Hey,
1.7.0 is available with redis cluster support
libraryDependencies += "com.github.etaty" %% "rediscala" % "1.7.0"


Version 1.2 is crashing in Xcode 9 using swift 3.2

Version 1.2 is crashing in Xcode 9 using swift 3.2. Aversion 1.1.0 was working normally

You mean not compiling ? I add if check for swift 4.0/3.2 and added 1.2.1 version, could you check it now ?

Tanto o projeto como o pod está setado como swift 3.2.
Segue abaixo os dois problemas que está aparecendo.

Check 1.2.1, i have updated it

@m1entus same error here (can't compile) with latest version 1.2.1.

I think it's fixed for swift 4 but no for swift 3.2

Finally should be fixed.


Developer user needs more roles than described in this page to work

In this page and also in this page https://learn.microsoft.com/en-us/azure/deployment-environments/quickstart-create-and-configure-projects#give-project-access-to-the-development-team what kind of permissions do the developer user needs at subscription level (or resource level). After some trial and error we found out it needs at least Reader access to the project.
This was confirmed by this section:
https://learn.microsoft.com/en-us/azure/deployment-environments/tutorial-deploy-environments-in-cicd-github#52-assign-roles-to-deployment-identities

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

ID: 7a741a80-f5ce-106c-77a0-471efd04a151
Version Independent ID: 8f02c241-70c7-164d-10f3-57d4cf3145c2
Content: Provide user access to projects for developers - Azure Deployment Environments
Content Source: articles/deployment-environments/how-to-configure-deployment-environments-user.md
Service: deployment-environments
GitHub Login: @RoseHJM
Microsoft Alias: rosemalcolm

@mahomedalid
Thanks for your feedback! We will investigate and update as appropriate.

Hi, @mahomedalid, are you still having this issue? If so, could you send me some more details, maybe a screenshot of the role assignments on the project? I can't reproduce it.

Hi @mahomedalid, thank you for taking the time to share your feedback. I haven't been able to reproduce this issue, so I'm closing this GitHub issue with our thanks to you for your interest in improving the documentation! Please feel free to reopen this conversation if you have further comments.
#please-close


Fix generate:readme gulp task

When we used vinylPaths and js-yaml together in a pipe, it started
breaking with "UnhandledPromiseRejectionWarning: Unhandled promise
rejection (rejection id: 1): Error: write callback called multiple
times"
As we're already using gulp-data we can use it to pipe data from yaml to
nunjucks template, as gulp-data exposes file paths
Generate:readme task also requires capitaliseComponentName function as an environment filter, which is used in the nunjucks template macro
capitaliseComponentName is used both the the gulp task and app.js
to it makes sense to move it out to /lib folder as a helper function and
then import it where it is needed.

You've got some other changes bundled up in this commit (e.g. the addition of the capitaliseComponentName function).

yeah, generate: readme task won't work with out that, it's a filter in the template

Aah, OK. Can we avoid defining it in two places? It's already in app.js.

Are we still using vinylPaths elsewhere? If not, should we remove its dependency?

yeah it's being used elsewhere asset-version.js


The ARM function listchannelwithkeys is not recognized as a valid function.

The function listchannelwithkeys is used with Bot Service channels to gain access to the channel secret key used to integrate into web applications, mobile apps, etc; however, it is not recognized as a valid function within the extension's intellisense.
This function is not documented in the list* page of the docs, but I've confirmed it with the bot engineering team and though testing. I've opened a GH issue for the docs as well:
https://github.com/MicrosoftDocs/azure-docs/issues/58918
Not sure if the docs and this extension are both pulling from same metadata under the hood or not.

Thanks! Right now we don't have a good way of getting info on the available list* functions directly. Can you point me to a sample REST return value or its shape? Thx.

Np. Here's an example output of executing the REST api call:
POST https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/BOT/providers/Microsoft.BotService/botServices/mybot/channels/WebChatChannel/listchannelwithkeys?api-version=2018-07-12
{
    "resource": {
        "properties": {
            "sites": [
                {
                    "siteId": "e3e6D1xXXXX",
                    "siteName": "Default Site",
                    "key": "e3e6D1xXXXX.yI9JZOdH56z4EVzxxxx0xXXXxxx0xXXx0xxxxxXxXXx",
                    "key2": "e3e6D1xXXXX.NW_1AU4G7_K6leXXXxxx0xXxX0xXxXxxXxxx0Xx0XXx",
                    "isEnabled": true,
                    "isWebchatPreviewEnabled": true
                }
            ]
        },
        "etag": "W/\"e687068fb29c03a506e10a6bd83546647/13/2020 7:27:57 PM\"",
        "channelName": "WebChatChannel",
        "location": "global"
    },
    "setting": {
        "extensionKey1": "",
        "extensionKey2": "",
        "sites": [
            {
                "siteId": "e3e6D1xXXXX",
                "siteName": "Default Site",
                "key": "e3e6D1xXXXX.yI9JZOdH56z4EVzxxxx0xXXXxxx0xXXx0xxxxxXxXXx",
                "key2": "e3e6D1xXXXX.NW_1AU4G7_K6leXXXxxx0xXxX0xXxXxxXxxx0Xx0XXx",
                "isEnabled": true,
                "isV1Enabled": true,
                "isV3Enabled": true,
                "isWebchatPreviewEnabled": true,
                "isSecureSiteEnabled": false,
                "isBlockUserUploadEnabled": false,
                "eTag": "\"21003a32-0000-0000-0000-000000000000\""
            }
        ],
        "channelId": "webchat",
        "channelDisplayName": "Web Chat",
        "botId": "mybot",
        "botIconUrl": "https://docs.botframework.com/static/devportal/client/images/bot-framework-default.png",
        "isEnabled": true
    },
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/BOT/providers/Microsoft.BotService/botServices/mybot/channels/WebChatChannel",
    "location": "global",
    "properties": {
        "properties": {
            "webChatEmbedCode": null,
            "sites": [
                {
                    "siteId": "e3e6D1xXXXX",
                    "siteName": "Default Site",
                    "key": "e3e6D1xXXXX.yI9JZOdH56z4EVzxxxx0xXXXxxx0xXXx0xxxxxXxXXx",
                    "key2": "e3e6D1xXXXX.NW_1AU4G7_K6leXXXxxx0xXxX0xXxXxxXxxx0Xx0XXx",
                    "isEnabled": true,
                    "isWebchatPreviewEnabled": true
                }
            ]
        },
        "etag": "W/\"e687068fb29c03a506e10a6bd83546647/13/2020 7:27:57 PM\"",
        "channelName": "WebChatChannel",
        "location": "global"
    },
    "provisioningState": "Accepted",
    "entityTag": "W/\"e687068fb29c03a506e10a6bd83546647/13/2020 7:27:57 PM\"",
    "changedTime": "0001-01-01T00:00:00Z"
}

The properties of interest is
properties.sites[0].key and properties.sites[0].key2
HTH

I think so, thanks!

https://github.com/Azure/azure-rest-api-specs/blob/master/specification/botservice/resource-manager/Microsoft.BotService/preview/2018-07-12/botservice.json


feat: upload pdf

Explanation
Leave functional pdf button, currently it is not uploading, take these details into account.

Change upload icon (does not have the correct one)
Once the pdf uploads, leave the option to edit and download

Screenshot

@angelik0828 Check last change.

:heavy_check_mark: It has been verified when uploading, you see the file name, save is given and it works fine, after exiting and entering the event again it can be downloaded, the only thing I see is that the upload and download icons are inverted up with arrow up up, and download with the icon facing down.

:warning: make sure the icons don't look inverted

@angelik0828 with last preview can see updated icons https://did-admin-panel-ofa0gmvc7-unete-didperucom.vercel.app/
About...

⚠ make sure the icons don't look inverted
It does not allow me to see the file once I exit the application, that is, I exit the event, go to another section or close the section, when I return to the same event, there is no file even after saving it.

What can I do to improve the experience or what does it refer to specifically?


Fr

@CodiumAI-Agent /review

PR Analysis

🎯 Main theme: The PR is about creating a new web application for IPL match ticket booking and local food ordering. It includes the setup of both frontend and backend servers, and the initial implementation of the home page.
📝 PR summary: The PR introduces a new project for an IPL match ticket booking and local food ordering website. It includes the setup of the frontend using React and Vite, and the backend using Express and MongoDB. The PR also includes the initial implementation of the home page, which fetches match data from the MongoDB database.
📌 Type of PR: Enhancement
🧪 Relevant tests added: No
⏱ Estimated effort to review [1-5]: 4, because the PR includes a lot of new code for both frontend and backend, and there are several areas where improvements can be made.
🔒 Security concerns: Yes, because the MongoDB connection string is hardcoded in the code, which could lead to exposure of sensitive data.

PR Feedback
💡 General suggestions: The PR is well-structured and the code is generally clean. However, there are several areas where improvements can be made, such as error handling, code organization, and security. It would also be beneficial to add tests to ensure the functionality of the application.
 🤖 Code feedback:relevant fileclient/src/components/Home.jsxsuggestion
Consider handling the case where the API call is successful but returns an empty array. This could be done by checking if matches is empty and displaying a message to the user if it is. [medium]
relevant lineconst [matches, setMatches] = useState([]);relevant fileserver/index.jssuggestion
It's a good practice to move sensitive data like MongoDB connection string to environment variables. This can prevent accidental exposure of sensitive data. [important]
relevant lineconst urii = 'mongodb+srv://dev326patil:devrajcapstone326@capstone.riouq2l.mongodb.net/?retryWrites=true&w=majority&appName=Capstone';relevant fileclient/src/components/Home.jsxsuggestion
It's not a good practice to hardcode URLs in your code. Consider moving the API URL to a constants file or environment variable. This will make your code more maintainable and flexible. [medium]
relevant lineconst response = await axios.get('http://localhost:3000/');relevant fileserver/index.jssuggestion
Consider adding error handling middleware to handle errors globally in your Express application. This can help to keep your code clean and make error handling more consistent. [medium]
relevant lineapp.use(express.json())

 ✨ Usage guide:
Overview:
The review tool scans the PR code changes, and generates a PR review. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.
When commenting, to edit configurations related to the review tool (pr_reviewer section), use the following template:
/review --pr_reviewer.some_config1=... --pr_reviewer.some_config2=...

With a configuration file, use the following template:
[pr_reviewer]
some_config1=...
some_config2=...

  Utilizing extra instructions
The review tool can be configured with extra instructions, which can be used to guide the model to a feedback tailored to the needs of your project.
Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify the relevant sub-tool, and the relevant aspects of the PR that you want to emphasize.
Examples for extra instructions:
[pr_reviewer] # /review #
extra_instructions="""
In the code feedback section, emphasize the following:
- Does the code logic cover relevant edge cases?
- Is the code logic clear and easy to understand?
- Is the code logic efficient?
...
"""

Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable.

  How to enable\disable automation

When you first install PR-Agent app, the default mode for the review tool is:

pr_commands = ["/review", ...]

meaning the review tool will run automatically on every PR, with the default configuration.
Edit this field to enable/disable the tool, or to change the used configurations

  About the 'Code feedback' section
The review tool provides several type of feedbacks, one of them is code suggestions.
If you are interested only in the code suggestions, it is recommended to use the improve feature instead, since it dedicated only to code suggestions, and usually gives better results.
Use the review tool if you want to get a more comprehensive feedback, which includes code suggestions as well.

  Auto-labels
The review tool can auto-generate two specific types of labels for a PR:

a possible security issue label, that detects possible security issues (enable_review_labels_security flag)
a Review effort [1-5]: x label, where x is the estimated effort to review the PR (enable_review_labels_effort flag)

  Extra sub-tools
The review tool provides a collection of possible feedbacks about a PR.
It is recommended to review the possible options, and choose the ones relevant for your use case.
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
require_score_review, require_soc2_review, enable_review_labels_effort, and more.

  More PR-Agent commands

To invoke the PR-Agent, add a comment using one of the following commands:

/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs 💎: Generate docstring for new components introduced in the PR.
/generate_labels 💎: Generate labels for the PR based on the PR's contents.
/analyze 💎: Automatically analyzes the PR, and presents changes walkthrough for each component.

See the tools guide for more details.
To list the possible configuration parameters, add a /config comment.

See the review usage page for a comprehensive guide on using this tool.


chore: update search results ordering

Details

Under a linked issue, I had a request to update the search ordering method. If search results have matching both threads and chat rooms, the chat rooms should be prioritized when displaying the list.
Fixed Issues

$ https://github.com/Expensify/App/issues/37619
PROPOSAL:
Tests

Create a chat room called "nice-chatroom"
Open a DM chat with someone and send a message with "nice" word in it
Reply in a thread to this message
Open Chat finder
Verify thread with "nice" word is higher than "#nice-chatroom"
Type "nice" in search
Verify "#nice-chatroom" is higher than a thread with "nice" word

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

Offline tests

n/a
QA Steps

Create a chat room called "nice-chatroom"
Open a DM chat with someone and send a message with "nice" word in it
Reply in a thread to this message
Open Chat finder
Verify thread with "nice" word is higher than "#nice-chatroom"
Type "nice" in search
Verify "#nice-chatroom" is higher than a thread with "nice" word

[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/13985840/c2f593d6-45bb-4798-bc06-eeab8b4ea902

Android: mWeb Chrome
https://github.com/Expensify/App/assets/13985840/39ca45f4-ceb7-4db7-b681-377f984cc6c8

iOS: Native
https://github.com/Expensify/App/assets/13985840/2ceaeb46-afb5-4aed-9322-0e33d33730a8

iOS: mWeb Safari
https://github.com/Expensify/App/assets/13985840/1697e432-9005-4e1d-887d-5c6722a0b9c0

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/13985840/44567ccc-a38d-46aa-9add-599f324a21c4

MacOS: Desktop
https://github.com/Expensify/App/assets/13985840/23b6254c-23ff-4a80-8202-a06424ff9688

Merge freeze is lifted for E/App PRs for now, so I'm going to merge this.

: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 staging by https://github.com/roryabraham in version: 1.4.77-11 🚀

platform
result

🤖 android 🤖
failure ❌

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/roryabraham in version: 1.4.77-11 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.78-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


key_share: add no_std support

blocked by https://github.com/dfns/generic-ec/pull/25

Instead of making Display instances by hand, we could convert what we had with thiserror into https://docs.rs/displaydoc/

Nice! I'll try using it

I see that I can use #[displaydoc("...")] instead. I'll give it a shot

@maurges I changed the code to use displaydoc + thiserror. A bit prettier, but it did introduce a breaking change: the HdError<E> now only implements Display if E: Display (it used to implement display for regardless of E). However, I doubt it's an any significant breaking change...

the HdError<E> now only implements Display if E: Display

It's silly that displaydoc crate doesn't allow us to request bounds by hand. But I agree that this is not really and important change


Can't delete blob file.

Hello, I got issue with deleting of blob file from vercel blob storage. I got 500.  Anyone can help ? Is it my mistake ? Thanks in advance :)

If anyone will meet this issue, then just change you Detele request to this and it will work.

closing this, since it seems to be solved. Feel free to reopen


If an admin is logged when filling out a form, send the "new_member" email to the logged in admin as well

Not needed any longer


Replace references to Replication Controllers with Deployments in doc…

…s/user-guide/walkthrough.
Also:

Cleanup pasted yaml and instead embed file
Clarify Service test sections by including busybox exec commands as part of the preformatted section

I am wondering if this example is not going to work since the docs still reference the k/k repo, but the yaml is only in the k/k.g.i repo.

@johndmulhausen I am adding new yaml config files for the deployment, but this guide has the user get the files from a release or the k/k example.  I am probably going to need to convert this example to use an entirely different convention based off the files in the k/k.g.i repo.  The click-to-copy addition to the widget is nice.  I'd like to explore if curling the file as part of the command would further simplify things for the user.  Does a widget exist that I could use to directly reference the absolute url to a raw yaml file in the current repo/branch or is this something that would be simple to create?

For now I am just telling the user to copy paste these files.  Definitely breaks up the flow since the other files are assumed to be checked out, but at least it is funcitonal.

Found a couple issues, fixing now

Fixed up and published to http://pwittrock.github.io/docs/user-guide/walkthrough/k8s201/.  PTAL

Had a few comments

Thnx PTAL

squashed commits

PTAL.  In the published version, the click-to-copy button and download link do not seem to be working.  Is the new widget the default?

It failed on master as well. @johndmulhausen is fixing it.

It's fixed now.

I'll republish this now that is my only open docs pr

@pwittrock A couple nits, but the main thing is we have merge conflicts now. :(

PTAL

@johndmulhausen Let me know when you are free to review this and then I will resolve the merge conflicts.

@pwittrock @janetkuo Let's not wait for @johndmulhausen's review

SGTM  @janetkuo Do you want to review again?  Can I self merge?

Looks good to me. :) Thanks!


cleanup client properties and unsubscribe from camera

@aconchillo 's suggestions to improve setting up the client, and save performance by unsubscribing from cameras.

LGTM. Thanks!


Swap to Context everywhere and diag support

Updates the provider to make use of Terraform diagnostics and reusing the context.Context passed in by the provider instead of spawning a new one.
Closes #1187

kicked off the full acceptance test suite for this one at https://github.com/cloudflare/terraform-provider-cloudflare/actions/runs/2256240309


Combinators for ApplyTo of an operation to Head, Tail, Rest, and Most of an array

This implements the ApplyTo{Head,Rest,Tail,Most}{,C,A,CA} combinators described in #313.

Thanks for your comments @cgranade. I have added an example to each of the main operations (the one without A, C, and CA modifiers).


diff support for generated columns, fulltext indexes

json function

CREATE TABLE `t_open_api` (
  `c_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
   `c_create_time` datetime NOT NULL DEFAULT '1980-01-01 01:00:00',
  `c_update_time` datetime NOT NULL DEFAULT '1980-01-01 01:00:00',
  `c_deleted` tinyint(1) NOT NULL DEFAULT '0',
  `route_pattern` varchar(100) GENERATED ALWAYS AS (json_unquote(json_extract(`c_route`,'$.pattern'))) VIRTUAL,
  `route_method` varchar(10) GENERATED ALWAYS AS (json_unquote(json_extract(`c_route`,'$.httpMethod'))) VIRTUAL,
  `c_sys_var_config` json DEFAULT NULL,
  `c_error` json DEFAULT NULL,
  `c_protect_res_field` json DEFAULT NULL,
  PRIMARY KEY (`c_id`),
  KEY `idx_route_method_pattern` (`route_method`,`route_pattern`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='OpenApi主体，c_identifier不唯一'

FULLTEXT KEY ft_question_text (question_text)

CREATE TABLE `t_question` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `question_text` longtext NOT NULL COMMENT '题目正文',
  `question_type` int(11) NOT NULL DEFAULT '1' COMMENT '题目类型，1单选、2多选、3判断、4填空、5解答',
  `question_diff` int(11) NOT NULL DEFAULT '1' COMMENT '题目难度，1简单、2一般、3困难',
  `question_source` varchar(512) NOT NULL DEFAULT '' COMMENT '题目来源',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_deleted` tinyint(1) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `ft_question_text` (`question_text`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

Thank you for the report, but Skeema legitimately doesn't support diff'ing tables using generated columns or fulltext indexes yet. Mentioned in the README:
A few uncommon MySQL features -- such as partitioning, fulltext indexes, spatial types,
virtual columns -- are not yet supported. Skeema is able to *create* or *drop* tables
using these features, but not *alter* them. The output of `skeema diff` and `skeema
push` clearly displays when this is the case. You may still make such alters directly/
manually (outside of Skeema), and then update the corresponding CREATE TABLE
files via `skeema pull`.

Keeping this open but tagging with feature request and help wanted. If anyone in the open source community is interested in contributing code for this, the changes would be in the tengo package, primarily affecting these files:

column.go would need modifications to be able to represent virtual columns
index.go would need modifications to be able to represent fulltext indexes
instance.go Instance.querySchemaTables() performs schema introspection by reading information_schema and populating Go structs accordingly, would need changes for both features
Test coverage in the corresponding *_test.go files

Should spatial types be added to this issue, or made a separate issue? Adding support looks like it would be more straightforward than these other features:
2019-08-30 12:26:36 [WARN]  Skipping table `location_tz`: unable to generate DDL due to use of unsupported features. Use --debug for more information.
2019-08-30 12:26:36 [DEBUG] --- Expected CREATE
2019-08-30 12:26:36 [DEBUG] +++ MySQL-actual SHOW CREATE
2019-08-30 12:26:36 [DEBUG] @@ -3 +3 @@
2019-08-30 12:26:36 [DEBUG] -  `pt` point NOT NULL,
2019-08-30 12:26:36 [DEBUG] +  `pt` point NOT NULL /*!80003 SRID 4326 */,
2019-08-30 12:26:36 [DEBUG] @@ -8 +8 @@
2019-08-30 12:26:36 [DEBUG] -  KEY `ix_location_tz_pt` (`pt`(32))
2019-08-30 12:26:36 [DEBUG] +  SPATIAL KEY `ix_location_tz_pt` (`pt`)

Please create a separate issue -- thanks! I can add some notes on potential implementation complexity from there.

@evanelias Done, thanks! #97

I forgot to update this issue last month, but Skeema v1.3.0 added support for fulltext indexes. So I'm editing this issue title to just track generated columns.

I'm happy to say that generated column support has been implemented in master, and will be included in the next binary release.

Today's release of Skeema v1.4.0 includes this functionality.


Wrong type for prop 'preview'

First of all, thank you for the nice component which saved my time.
Please, fix type of property preview.
According to cropperjs docs preview can be

Element, Array (elements), NodeList or String (selector)

I'm passing ref, and it's works but with warning in console.

Thanks, I'll look into it.


IllegalStateException: DeviceInfo.getDefaultBrowserAgent

Hi,
We see some Branch SDK related crashes in our logs.
Method DeviceInfo.getDefaultBrowserAgent causes IllegalStateException. It's triggered by BranchUniversalObject.registerView.
Branch SDK version: 2.18.1
Whole stack trace:
IllegalStateException_DeviceInfo.getDefaultBrowserAgent-stack_trace.txt

@AndrazP Thanks for the logs. We are working on it and update asap.

Hi @AndrazP , can you let us know if this is still an issue, after the update?

Hi @Sarkar,
I was not aware that a new version is available. We will include it our next release.
For now I'm closing this issue.
Thanks!


[FR] Sync Content-Type/Accept with Request/Response

Description

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate)

Types of changes

Bug fix (non-breaking change which fixes an issue)
New feature (non-breaking change which adds functionality)
Breaking change (fix or feature that would cause existing functionality to change)

Checklist

[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes if appropriate.
[ ] All new and existing tests passed.

Seems to work ok - have you encountered any issues?
https://user-images.githubusercontent.com/9343811/194138330-e777d3f3-b444-46d5-a14f-692e607cf796.mov


PHPUnit 8 Shift

This pull request contains changes for upgrading to PHPUnit 8 automated by the PHPUnit 8 Shift.
Before merging, you should review all comments and commit any changes to the shift-20501 branch.
If there were changes you felt could have been automated, please reply to the follow-up email with your feedback or on Twitter.

:information_source: PHPUnit 8 now enables caching of test results by default. This was optionally introduced in PHPUnit 7.3. If necessary, you can configure this from the command line or within phpunit.xml.

:information_source: PHPUnit 8 now enables resolution of test dependencies by default. This was optionally introduced in PHPUnit 7.2. If necessary, you can configure this from the command line or within phpunit.xml.


AOT tests fail to run "assemble" command with Xcode 13.0

--- Command "vm_compile_to_kernel" (took 01.000225s):
DART_CONFIGURATION=ReleaseARM64 /opt/s/w/ir/cache/builder/sdk/pkg/vm/tool/gen_kernel --aot --platform=xcodebuild/ReleaseARM64/vm_platform_strong.dill -o /opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.dill /opt/s/w/ir/cache/builder/sdk/tests/language/assert/assert_test.dart --packages=/opt/s/w/ir/cache/builder/sdk/.packages -Ddart.vm.product=false --enable-asserts --sound-null-safety

exit code:
0

--- Command "precompiler" (took 01.000714s):
DART_CONFIGURATION=ReleaseARM64 xcodebuild/ReleaseARM64/gen_snapshot --snapshot-kind=app-aot-assembly --assembly=/opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.S --enable-asserts --ignore-unrecognized-flags --packages=/opt/s/w/ir/cache/builder/sdk/.packages /opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.dill

exit code:
0

--- Command "remove_kernel_file" (took 8ms):
DART_CONFIGURATION=ReleaseARM64 rm /opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.dill

exit code:
0

--- Command "assemble" (took 766ms):
DART_CONFIGURATION=ReleaseARM64 clang -arch arm64 -Wl,-no_compact_unwind -dynamiclib -nostdlib -o /opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.aotsnapshot /opt/s/w/ir/cache/builder/sdk/xcodebuild/ReleaseARM64/generated_compilations/dartkp-strong-mac-release-arm64/tests_language_assert_assert_test/out.S

exit code:
1

stderr:
ld: dynamic main executables must link with libSystem.dylib for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

--- Re-run this test:
python3 tools/test.py -n dartkp-strong-mac-release-arm64 language/assert/assert_test

https://developer.apple.com/forums/thread/693332 suggests that we either add -lsystem or remove -nostdlib.
@a-siva FYI

I expect our assembly should be okay if linked without -nostdlib, which I'm trying at https://dart-review.googlesource.com/c/sdk/+/224420.
Though this seems like a bug in the Mac linker because there's no reason a shared library that doesn't use any outgoing references or PLT/GOT should need to link with any other library at all. It's strange that the error message refers to dynamic main executables when we are building a library not a main executable (using -dynamiclib).


GridModel.store config accepts a plain object, creates LocalStore

Clean up instances where we were creating a new LocalStore inline
Mark created store as managed within GridModel. Note that stores do not yet actually implement destroy() but will when #1014 complete.
Fixes #1013

Note there are a number of instances in Toolbox that could be cleaned up.  I did not jump on that yet, though, pending this review. Figured we had enough concrete examples within this project to test.


Missing builder pod launch

Image: smothiki/builder:v2.1
Builder is hung on git push (and will wait for timeout):
k:beef example-go [master]$ g push deis master
Warning: the RSA host key for '[deis.beef.slack.io]:2222' differs from the key for the IP address '[<IP_ADDRESS>]:2222'
Offending key for IP in /Users/jhansen/.ssh/known_hosts:109
Matching host key in /Users/jhansen/.ssh/known_hosts:113
Counting objects: 529, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (524/524), done.
Writing objects: 100% (529/529), 54.51 KiB | 0 bytes/s, done.
Total 529 (delta 482), reused 0 (delta 0)
remote: --->

It looks like the slugbuilder launched and completed though:
deis        22s         22s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod                                           Scheduled   {scheduler }                                        Successfully assigned slugbuild-earthy-instinct-d4c807b8-a94f52b6 to ip-10-0-0-98.us-west-2.compute.internal
deis        22s         22s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       implicitly required container POD   Pulled      {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Container image "gcr.io/google_containers/pause:0.8.0" already present on machine
deis        22s         22s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       implicitly required container POD   Created     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Created with docker id a626b5939b47
deis        22s         22s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       implicitly required container POD   Started     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Started with docker id a626b5939b47
deis        20s         20s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       spec.containers{deis-slugbuilder}   Started     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Started with docker id 710055360b5b
deis        20s         20s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       spec.containers{deis-slugbuilder}   Pulled      {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Successfully pulled image "quay.io/deisci/slugbuilder:v2-beta"
deis        20s         20s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       spec.containers{deis-slugbuilder}   Created     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Created with docker id 710055360b5b
deis        14s         14s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       implicitly required container POD   Killing     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Killing with docker id a626b5939b47
deis        14s         14s        1         slugbuild-earthy-instinct-d4c807b8-a94f52b6   Pod       spec.containers{deis-slugbuilder}   Killing     {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Killing with docker id 710055360b5b

And the logs from the container (pulled off the host):
{"log":"\u001b[1G-----\u003e Go app detected\n","stream":"stdout","time":"2016-02-24T00:58:32.299975079Z"}
{"log":"\u001b[1G-----\u003e Checking Godeps/Godeps.json file.\n","stream":"stdout","time":"2016-02-24T00:58:32.310713312Z"}
{"log":"\u001b[1G-----\u003e Installing go1.4.2... done\n","stream":"stdout","time":"2016-02-24T00:58:36.717534582Z"}
{"log":"\u001b[1G-----\u003e Running: godep go install -tags heroku ./...\n","stream":"stdout","time":"2016-02-24T00:58:36.722983276Z"}
{"log":"\u001b[1G-----\u003e Discovering process types\n","stream":"stdout","time":"2016-02-24T00:58:37.321394269Z"}
{"log":"\u001b[1G       Procfile declares types -\u003e web\n","stream":"stdout","time":"2016-02-24T00:58:37.377768932Z"}
{"log":"\u001b[1G-----\u003e Compiled slug size is 1.7M\n","stream":"stdout","time":"2016-02-24T00:58:37.733511004Z"}

So pretty sure that we need to handle all possible pod states in the initial waitForPod.
In this case, we must also handle api.PodSucceeded.

So I added a bunch more debugging information to a local builder. We've got a mess of possible state transitions for the builder pods.
I'm seeing many instances where slugbuilder pod will start -> Pending -> Running -> Terminate before we are able to get through waitForPod and all the associated machinery. In the final state, the pod simply appears as a 404. So we are unable to determine if the pod never existed, or existed and has since gone away.
I think the most sensible move going forward will be for builder to subscribe to all events in the deis namespace before launching the slugbuilder pod so that builder can see the "record of truth" from the stream. We should be able to see that the Pod came up, completed and exited. Any attempt to use the k8s API with respect to Pods directly will probably suffer from the Terminated == 404 behavior.
This most certainly leaves builder log streaming in an unfortunate position. Logs will most likely "best effort" for beta even with event processing (and possibly v2.0.0). Ultimately, we may need to move away from pod logs and have a small utility/API for slug and docker builders to stream IO back to the builder component.
Which should be more dependable and reliable than fetching logs from k8s API.

I'm late to the party here (and on mobile) so apologies if I'm repeating anything. I have a prototype PR for watching the event stream to observe all state transitions with the pod. That PR also begins streaming logs after the pod has been launched, but with 'previous' set to true, which afaik solves the log streaming issue (even though I'd love to build a log streaming system for builder pod -> builder, I'd like to try as hard as possible to stick to the k8s API here.
The state of that PR is purely prototypical and I'm not even sure if it builds right now, but I just wanted to throw out the info and current state of affairs.
Given that we're talking about a race condition here (and have been for at least the past few weeks), we haven't solved the bug until we make a fundamental change such as this one.
Finally, there are a few other strategies we can take also, which I'll throw out in a separate issue or comment when I have better access to the internets
Sent from my iPhone

On Feb 24, 2016, at 19:54, Jason Hansen<EMAIL_ADDRESS>wrote:
So I added a bunch more debugging information to a local builder. We've got a mess of possible state transitions for the builder pods.
I'm seeing many instances where slugbuilder pod will start -> Pending -> Running -> Terminate before we are able to get through waitForPod and all the associated machinery. In the final state, the pod simply appears as a 404. So we are unable to determine if the pod never existed, or existed and has since gone away.
I think the most sensible move going forward will be for builder to subscribe to all events in the deis namespace before launching the slugbuilder pod so that builder can see the "record of truth" from the stream. We should be able to see that the Pod came up, completed and exited. Any attempt to use the k8s API with respect to Pods directly will probably suffer from the Terminated == 404 behavior.
This most certainly leaves builder log streaming in an unfortunate position. Logs will most likely "best effort" for beta even with event processing (and possibly v2.0.0). Ultimately, we may need to move away from pod logs and have a small utility/API for slug and docker builders to stream IO back to the builder component.
Which should be more dependable and reliable than fetching logs from k8s API.
—
Reply to this email directly or view it on GitHub.

This should probably be a blocker and deserves the events/watch fix IMO.
Trying to stick to k8s APIs make sense as long as streaming with previous works for deleted pods I'm :+1: for that approach.

Still debugging this with @smothiki, and we've found when things go wrong with slugbuilder that k8s is killing the pod in such a way that its status goes directly to Terminating from Pending. So even watching the event stream might not work, since by the time it's Terminating there's little we can do.
$ kubectl --namespace=deis get po -w
NAME                                          READY     STATUS    RESTARTS   AGE
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Pending   0          0s
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Pending   0         0s
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Terminating   0         0s
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Terminating   0         0s
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Terminating   0         0s
slugbuild-trendy-jetliner-7cfb303f-fddf5fed   0/1       Terminating   0         0s

In terminating state we tried to get pod status with kubectl. Kubectl errored out saying POD not available. while -w still showing POD status is terminating. Also this bug is related not only to builder. Trying to debug from kubernetes API server and kubelet end. Not much luck as of now.
Did check if the container of the terminating POD and container ran successfully and exited with 0 exit status

Namespace-wide events stream is what you want to look at. I think get po -w suffers from the same pod orientation:
I've always seen Started -> Pulled -> Created via kubectl get events -w --all-namespaces.
deis      59m       59m       1         slugbuild-convex-airfield-1b9813a5-449e9397   Pod       spec.containers{deis-slugbuilder}   Pulled    {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Successfully pulled image "quay.io/deisci/slugbuilder:v2-beta"
deis      59m       59m       1         slugbuild-convex-airfield-1b9813a5-449e9397   Pod       spec.containers{deis-slugbuilder}   Created   {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Created with docker id afd4fa8599ae
deis      1h        1h        1         slugbuild-convex-airfield-1b9813a5-449e9397   Pod       spec.containers{deis-slugbuilder}   Started   {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Started with docker id afd4fa8599ae
deis      1h        1h        1         slugbuild-convex-airfield-1b9813a5-449e9397   Pod       spec.containers{deis-slugbuilder}   Killing   {kubelet ip-10-0-0-98.us-west-2.compute.internal}   Killing with docker id afd4fa8599ae

In the case a pod transitions to terminated and is GCd before we get logs we're hosed for logs. Thus the recommendation to move log streaming into our application layer, rather than k8s.

Here are the relevant events after a failed git push deis master on current v2:
$ kubectl get events -w --all-namespaces
...
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod                 Scheduled   {scheduler }   Successfully assigned dockerbuild-oldest-yodeling-2e2054e7-135a237c to <IP_ADDRESS>
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       implicitly required container POD   Pulled    {kubelet <IP_ADDRESS>}   Container image "gcr.io/google_containers/pause:0.8.0" already present on machine
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       implicitly required container POD   Created   {kubelet <IP_ADDRESS>}   Created with docker id 9656c4dc735c
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       implicitly required container POD   Started   {kubelet <IP_ADDRESS>}   Started with docker id 9656c4dc735c
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       spec.containers{deis-dockerbuilder}   Pulling   {kubelet <IP_ADDRESS>}   Pulling image "quay.io/deisci/dockerbuilder:v2-beta"
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       spec.containers{deis-dockerbuilder}   Pulled    {kubelet <IP_ADDRESS>}   Successfully pulled image "quay.io/deisci/dockerbuilder:v2-beta"
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       spec.containers{deis-dockerbuilder}   Created   {kubelet <IP_ADDRESS>}   Created with docker id 5b9e9f608634
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       spec.containers{deis-dockerbuilder}   Started   {kubelet <IP_ADDRESS>}   Started with docker id 5b9e9f608634
deis      0s        0s        1         dockerbuild-oldest-yodeling-2e2054e7-135a237c   Pod       implicitly required container POD   Killing   {kubelet <IP_ADDRESS>}   Killing with docker id 9656c4dc735c

@mboersma  what is 0s mean ? execution time

"FIRST SEEN" and "LAST SEEN"

Sorry--I pasted the header back in to hopefully make that output easier to decipher.

This is fixed by #206. Yes, really.

@gabrtv found a similar issue in #225, so I'm going to reopen this under RC1. It's unlikely that we'll be able to close this issue until we re-architect the way we stream logs. I've proposed a solution in #207.

promoting to beta3


can't install js in an ubuntu vm

I used https://hub.grid.tf/tf-bootable/ubuntu:lts.flist to deploy an ubuntu vm inside a development zos then I tired to install js
ssh<EMAIL_ADDRESS>The authenticity of host '<IP_ADDRESS> (<IP_ADDRESS>)' can't be established.
ECDSA key fingerprint is SHA256:XpTFYT8lGEGIB39ExFKVLnN85JjXnC//HCGBYKmEYQc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '<IP_ADDRESS>' (ECDSA) to the list of known hosts.
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-21-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@ubuntu:~# clear

root@ubuntu:~# uname -a
Linux ubuntu 4.4.0-21-generic #37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@ubuntu:~# apt-get update
Hit:1 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:2 http://download.zerotier.com/debian/xenial xenial InRelease [11.5 kB]
Get:3 http://archive.ubuntu.com/ubuntu xenial/main Translation-en_GB [426 kB]
Get:4 http://archive.ubuntu.com/ubuntu xenial/universe Translation-en_GB [3,040 kB]
Get:5 http://archive.ubuntu.com/ubuntu xenial/multiverse Translation-en_GB [88.1 kB]
Get:6 http://archive.ubuntu.com/ubuntu xenial/restricted Translation-en_GB [2,556 B]
Get:7 http://download.zerotier.com/debian/xenial xenial/main amd64 Packages [654 B]
Fetched 3,568 kB in 7s (448 kB/s)
Reading package lists... Done
root@ubuntu:~# export JUMPSCALEBRANCH="development"
root@ubuntu:~# export JSFULL=1
root@ubuntu:~# export JS_FULL=1
root@ubuntu:~# curl https://raw.githubusercontent.com/threefoldtech/jumpscale_core/development/install.sh?$RANDOM > /tmp/install_jumpscale.sh;bash /tmp/install_jumpscale.sh

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12713  100 12713    0     0   1718      0  0:00:07  0:00:07 --:--:--  1718
sed: can't read /root/.profile_js: No such file or directory
sed: can't read /root/.profile_js: No such file or directory
INSTALL Jumpscale on branch development
[+] updating packages
[+] installing git, python, mc, tmux, curl
/tmp/install_jumpscale.sh: line 5: /bin/rm: No such file or directory

**** ERRORLOG ****
/tmp/install_jumpscale.sh: line 8: /bin/cat: No such file or directory

[-] something went wrong: could not install package mc

root@ubuntu:~#

The issue isn't related to jumpscale, I think it is related to the way flists work. I managed to install jumpscale by running the normal installer around 8 times with different error very time and I haven't changed anything.
i.e. I ran the installer, it gave loading shared library error, then I ran it again without changing anything, it ran normally!:
root@ubuntu:~# bash /tmp/install_jumpscale.sh
bash: error while loading shared libraries: /lib/x86_64-linux-gnu/libtinfo.so.5: cannot read file data: Error 21
root@ubuntu:~# bash /tmp/install_jumpscale.sh
INSTALL Jumpscale on branch development
[+] updating packages****

I think it is related to the way zo-os handles vm and flist. I managed to install jumpscale by running the normal installer around 8 times with different error very time and I haven't changed anything.
i.e. I ran the installer, it gave loading shared library error, then I ran it again without changing anything, it ran normally!:
root@ubuntu:~# bash /tmp/install_jumpscale.sh
bash: error while loading shared libraries: /lib/x86_64-linux-gnu/libtinfo.so.5: cannot read file data: Error 21
root@ubuntu:~# bash /tmp/install_jumpscale.sh
INSTALL Jumpscale on branch development
[+] updating packages****

Found issue on 0-fs causing issue. Investigating.

The issue is fixed, can you try again

verified
branch : development
lib : eeb3c4a
prefab: 1574a75
core: f182ac3
steps to verify :
1- start a fresh z-os node .
2- deploy an ubuntu vm over it using ubuntu flist https://hub.grid.tf/tf-bootable/ubuntu:lts.flist
3- install js on this vm as next :
root@ubuntu:~# apt-get update
Get:1 http://download.zerotier.com/debian/xenial xenial InRelease [11.5 kB]
Hit:2 http://archive.ubuntu.com/ubuntu xenial InRelease
Get:3 http://download.zerotier.com/debian/xenial xenial/main amd64 Packages [654 B]
Fetched 12.2 kB in 3s (3,792 B/s)
Reading package lists... Done
root@ubuntu:~# export JSFULL=1
root@ubuntu:~# export JUMPSCALEBRANCH="development"
root@ubuntu:~# export JS_FULL=1
root@ubuntu:~# curl https://raw.githubusercontent.com/threefoldtech/jumpscale_core/$JUMPSCALEBRANCH/install.sh?$RANDOM > /tmp/install_jumpscale.sh;bash /tmp/install_jumpscale.sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 12713  100 12713    0     0   2611      0  0:00:04  0:00:04 --:--:--  2611
sed: can't read /root/.profile_js: No such file or directory
sed: can't read /root/.profile_js: No such file or directory
INSTALL Jumpscale on branch development
[+] updating packages
[+] installing git, python, mc, tmux, curl
[+] installing development tools: build essential & pythondev
[+] upgrade pip
[+] Checking if https://github.com/threefoldtech/jumpscale_core/tree/development exists
[+] get code https://github.com/threefoldtech/jumpscale_core.git (development)
 [+] pull
[+] Checking if https://github.com/threefoldtech/jumpscale_lib/tree/development exists
[+] get code https://github.com/threefoldtech/jumpscale_lib.git (development)
 [+] pull
[+] Checking if https://github.com/threefoldtech/jumpscale_prefab/tree/development exists
[+] get code https://github.com/threefoldtech/jumpscale_prefab.git (development)
 [+] pull
[+] Checking if https://github.com/threefoldtech/digital_me/tree/development exists
[+] get code https://github.com/threefoldtech/digital_me.git (development)
 [+] pull
[+] Checking if https://github.com/threefoldtech/digital_me_recipes/tree/development exists
[+] get code https://github.com/threefoldtech/digital_me_recipes.git (development)
 [+] clone
Cloning into 'digital_me_recipes'...
remote: Enumerating objects: 92, done.
remote: Counting objects: 100% (92/92), done.
remote: Compressing objects: 100% (50/50), done.
remote: Total 92 (delta 37), reused 81 (delta 32), pack-reused 0
Unpacking objects: 100% (92/92), done.
Checking connectivity... done.
[+] clean previous JS install
[+] install JS
/opt/code/github/threefoldtech/jumpscale_core /tmp
/tmp
[+] load env
[+] installing jumpscale lib
/opt/code/github/threefoldtech/jumpscale_lib /tmp

/tmp
[+] installing jumpscale prefab
/opt/code/github/threefoldtech/jumpscale_prefab /tmp
[+] initializing jumpscale
Collecting Cython
  Downloading https://files.pythonhosted.org/packages/99/f9/1c93f3ef9189e53c8647b55ea60ad5f6fd4cdcb0217fc97e87e299d8528d/Cython-0.28.5-cp35-cp35m-manylinux1_x86_64.whl (3.3MB)
    100% |████████████████████████████████| 3.3MB 328kB/s
Installing collected packages: Cython
Successfully installed Cython-0.28.5
Collecting numpy
  Downloading https://files.pythonhosted.org/packages/75/22/355e68c80802d6f488223788fbda75c1daab83c3ef609153676c1f17be5f/numpy-1.15.2-cp35-cp35m-manylinux1_x86_64.whl (13.8MB)
    100% |████████████████████████████████| 13.8MB 101kB/s
Installing collected packages: numpy
Successfully installed numpy-1.15.2
Requirement already up-to-date: PyNaCl in /usr/local/lib/python3.5/dist-packages (1.3.0)
Requirement already satisfied, skipping upgrade: cffi>=1.4.1 in /usr/local/lib/python3.5/dist-packages (from PyNaCl) (1.11.5)
Requirement already satisfied, skipping upgrade: six in /usr/local/lib/python3.5/dist-packages (from PyNaCl) (1.11.0)
Requirement already satisfied, skipping upgrade: pycparser in /usr/local/lib/python3.5/dist-packages (from cffi>=1.4.1->PyNaCl) (2.19)
[+] jumpscale installed (OK)


[TASK] Generate multiple CRD versions

What's the task? Please describe
Longhorn will support v1beta1 and v1beta2 (storage version), so need to generate multiple CRD versions in crd.yaml by k8s/generate-groups.sh instead of by manual.

https://github.com/longhorn/longhorn-manager/pull/1126
https://github.com/longhorn/longhorn/issues/2955

The task is implemented in https://github.com/longhorn/longhorn-manager/pull/1136.

We'll update the code to only generate the CRD structural schema on longhorn.io/v1beta2 CRD only, and keep the longhorn.io/v1beta1 schemeless because we should not add any change on the old longhorn.io/v1beta1 anymore.

@derekbit Do we have any specific test cases for this?

No, we don't have specific test cases for this yet.

Validation - PASSED
With latest master branch.
On functionality:

This change is covered by the existing E2E pipeline.
For mixed resource version scenario(upgrade from before v1.2.3) will be tested separately throughout the release process.

On development process:

By checking out generate_code.sh, I can regenerate latest 03-crd.yaml and deploy it without problem.

Additional notes on setting up the environment for generate_code.sh:
For unknown reason I had to export the path variable to make it run, in case anyone bump into this I am putting it here: $ export GOPATH="$(go env GOPATH)"
Also, for the fresh environment, controller-gen need to be satisfied separately, go get<EMAIL_ADDRESS>Otherwise:
Generating CRD
./generate_code.sh: line 59: controller-gen: command not found

Then, I had to manually clone longhorn-manger repo into the $GOPATH/src/github.com/longhorn
./generate_code.sh: line 64: /home/kaxing/bin/golang/1.17.7/packages/src/github.com/longhorn/longhorn-manager/deploy/install/01-prerequisite/03-crd.yaml: No such file or directory

Lastly:
the generated file goes into: ${GOPATH}/src/${LH_MANAGER_DIR}/deploy/install/01-prerequisite/03-crd.yaml, in my case:
/home/kaxing/bin/golang/1.17.7/packages/src/github.com/longhorn/longhorn-manager/deploy/install/01-prerequisite/03-crd.yaml


Turbolinks

Hey all,
I'm interested in adding an implementation for PJAX, for example: Turbolinks. However, the conduit specs expect the implementation to be a stereotypical SPA stack consisting of a backend providing an API to a frontend. Also, the requirement for JWT may not apply for PJAX apps, they're usually all just simple sessions.
I think it's valuable to add PJAX apps (intercoolerjs, turbolinks, pjax etc) to the mix. Does anyone have any recommendations or thoughts on this?

Hi @jho406, we do have a section called Fullstack which may be relevant for this - even though we don't yet have a full implementation - hey you could be the first!.
I don't think we would need to enforce JWT for fullstack implementations.

Hey, that's great! thanks @anishkny

FYI I've implemented Turbolinks for GET requests in my server-rendered app here: https://github.com/jacobstern/typescript-handlebars-realworld. However the Turbolinks feature is mostly incidental and you could definitely go further with it in a Turbolinks-focused implementation, e.g. enabling Turbolinks for forms, page transitions, Rails integration. Nice to see I'm not alone in "rediscovering" server-rendered app techniques in 2019 (FWIW I was mostly inspired by work by the Phoenix framework team).

Hello we are currently moving all work in progress to Github Discussions.
I'll close this issue by now, you can find instruction to open a discussion there : https://github.com/gothinkster/realworld/discussions/633
Thanks for your contribution !


update readme

Closes #10

Thanks @al-niessner - I added the latest ops debugging question to the faq.

@cmarshak - FYI let us know if there's any other FAQ questions you think might be useful.


Remove blur on scope

Blur removal on scope is not working

Blur Removal is a feature that removes the blur outside of the scopes(AWP,SSG,SG,AUG)
The feature is still working in the latest version, are you perhaps talking about the blur of the scope when you move?

Blur Removal is a feature that removes the blur outside of the scopes(AWP,SSG,SG,AUG)
The feature is still working in the latest version, are you perhaps talking about the blur of the scope when you move?

Oh okay I guess the feature I'm thinking of isn't included, thanks for that info.

Blur removal on scope is not working

try Disable Scope Overlay and Disable Post Processing at the same time

Blur Removal is a feature that removes the blur outside of the scopes(AWP,SSG,SG,AUG)
The feature is still working in the latest version, are you perhaps talking about the blur of the scope when you move?

Oh okay I guess the feature I'm thinking of isn't included, thanks for that info.

if you want to remove the scope,
return interfaces->panel->getName(panel) == "HudZoom" on the paintTraverse and manually draw a line drawList->AddLine()


⚠ ClamAV has degraded performance

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

HTTP code: 200
Response time: 284 ms

Resolved: ClamAV performance has improved in ea08e85 after 5 minutes.


docker.legacy_build(pull="never") is treated as pull=True

It seems that APIs that only accept booleans will be interpreted as a boolean value even if another type is given. This is particularly confusing in the case of docker.legacy_build(pull: bool), which is subtly different to docker.run(pull: str). Would it be worth doing some arg type validation, at least in the Command.add_flag() method?

Yes I think that would be helpful. I would be happy to get such a PR :)

Maybe we should consider using beartype for this. That would avoid some complexity in our arguments. Maybe we should decorate our public api with this?

That sounds like an interesting idea, I hadn't come across beartype before - what enigmatic docs!

EDIT: Maybe we should consider using beartype for this. That would avoid some complexity in our arguments. Maybe we should decorate our public api with this?

@gabrieldemarmiesse would the following suffice?
from beartype import beartype
...
    @beartype
    def add_flag(self, name: str, value: bool):
        if value:
            self.append(name)

I asserted that beartype catches these issues at runtime, so this should solve str types being passed. Moreover, the if value check can also removed as a result of this.

The issue with adding the beartype decorator used in non-public APIs is that the error messages won't be clean for the users. The error message will talk about a type mismatch in an internal function and it won't be obvious what caused this. I tend to think that decorating public apis functions with beartype would make error messages clearer from a user perspective.

That makes lots of sense, thanks for the explanation! I'm going to read more beartype docs before trying to work a fix. Appreciate the feedback!


Reflection LinOp

Add the LinOp to handle the kind of (I + coef * U * V)
Reflection can be used in householder QR or block QR.
Q of QR can be a form of (I + c1u1u1*) ... (I + ckukuk*) in Householder QR
Q of QR can be a form of (I + WkYk*) ... (I + WkYk*) in block QR
Reflection stores the V explicitly even if V = U*

That I understand it right - you want to have a LinOp "Reflection" such that for a matrix A you can generate the reflection matrix R(A)  (or short ''R'') and then you can apply the Reflection R to a vector in the form t=R(v).
Is that correct?

@hartwiganzt
Reflection only handles one (I+cUV), so we need to use composition of reflections as Q.
Reflection is like Composition/CSR/.....
Reflection stores the operators, but it does not generate anything from a matrix.
Generating the operators from the matrix should be in QR.
For example,
[u1, u2, ....] = Householder_QR(A) // u1 u2 is the householder factors
Qi = Reflection(-2, u1) // householder matrix Q = (I-2uu*)
Q = Q1* x Q2* x Qn* // composition of reflection. do not form it explictly.

I add the description and change the name.
Currently, (I + coef * U * V) -> (Identity + scalar * basis * projector)

sonar report a bug for the commit 7bc7922
It needs to follow Rules-of-five(destructor, copy constructor, copy-assignment, move constructor, and move-assignment). Do not need to add move operation if there is no fast way.
Reference: https://rules.sonarsource.com/cpp/tag/leak/RSPEC-3624

Can somebody check the comments of this PR (maybe also the name choices) if they are fine from a mathematical point of view (I think @hartwiganzt and/or @pratikvn would be good)?


Timesliders require update for RAMP4/Vue3

Timesliders are currently leveraged by the following products:

[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/410b88da-0ed1-4749-903f-5e76c24e2e5f
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/4a99bbb4-7aba-49b2-8a84-f149a7b7bace
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/253s99wa-7pd8-4526-223f-8q37w49j2e4g
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/887dadc1-7936-4628-9c27-79da8da891ea
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/02980a8b-c041-49f9-9820-40bf05a75002
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/f6f7baf4-cccb-4521-a037-b4691b0f0d49
[ ] https://environmental-maps.canada.ca/ramp-storylines/index-ca-en.html#/en/fee93703-c719-423a-86e2-abe30b992aa5

We require a timeslider feature that will work in RAMP4/Vue3 and supports the same basic look and feel as the existing ones. Ideally, the schema providing info to it will remain the same.
NOTE: This timeslider may also work as the starting ground for upcoming CESI work, so may need to go into RAMP4 proper?

Random ideas (especially if it ends up being in RAMP core): In RAMP4, making it look like it is now (horizontal bar running along the bottom) means it gets implemented as a map component. Any panels can then cover it.
This is also true in RAMP2, but you can position it so that only a maximized grid covers it. In RAMP4, covering it is fairly easy; e.g. having a legend open and then doing an identify (== 3 panels).

Maybe this is fine. All good.
A fancy option that makes panels have 80% height instead of 100%. All panels should be handling vertical overflow anyways so this just changes the look, allows a slider to lurk in the under-part.
Vertical slider in a panel.

Allows the slider to be minimized to the app bar.
Vertical layout removes the issue of label crowding on horizontal bar (especially in a mobile layout).
Would allow slider to be teleported. (Would be curious if this could allow a "horizontal" option that ends up looking good when teleported to a div under the map).
Could be argued that it doesn't look as nice is in the standard setting. Having the slider just "there" and in idealized presentation is eyecatching, especially on a site where time-slicing is a core part of the data.

Will defer to the experts in SpencerBar™ technology.


PDF Chinese title looks like #####

Expected Behavior
I need to create a Chinese document using Markdown and DITA, and style it according to the \dita-ot-4.1.1\docsrc\samples\themes\dita-ot-docs_A4.yaml.
Actual Behavior
All Chinese titles are displayed as "####" regardless of their level, whether they are first-level or second-level titles.
Possible Solution
I have tried not using a theme, and the Chinese titles display correctly. Therefore, I suspect there might be an issue with the Chinese styles within the theme.
Steps to Reproduce

I created two DITA Markdown files and authored a map.
I used the command dita -i .\git_map.dita -f pdf --theme dita-ot-docs-A4.yaml to convert the documents to PDF.

Copy of the error message, log file, or stack trace
none
Environment
Environment:jdk17

DITA-OT version:

Operating system and version:
Windows11

How did you run DITA-OT?
dita command

Transformation type:
PDF
I am a beginner in DITA-OT, please help me. Thank you.

What happens if you explicitly set font-family for headers? Add the following to dita-ot-docs_A4.yaml
style:
  h1:
    font-family: $pdf2-font-sans
  h2:
    font-family: $pdf2-font-sans
  h3:
    font-family: $pdf2-font-sans

What happens if you explicitly set font-family for headers? Add the following to dita-ot-docs_A4.yaml
style:
  h1:
    font-family: $pdf2-font-sans
  h2:
    font-family: $pdf2-font-sans
  h3:
    font-family: $pdf2-font-sans

Still #####

What happens if you explicitly set font-family for headers? Add the following to dita-ot-docs_A4.yaml
style:
  h1:
    font-family: $pdf2-font-sans
  h2:
    font-family: $pdf2-font-sans
  h3:
    font-family: $pdf2-font-sans

Thank you for your reply.
this is PDF

This is markdown source

h1 looks fine, but h2 and italic text not well

Can you attach the Markdown source, not as an image, but as a file?

Sorry.
I create two LwMarkdown:
file1.md:
# 中文标题 title1

中文标题描述1
_中文标题描述1 斜体_
description 1

## 中文内容1

中文内容描述1
description 1

file2.md
# 中文标题2

中文标题描述2

## 中文内容2

中文内容描述2

test_map.ditamap
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE map PUBLIC "-//OASIS//DTD DITA Map//EN" "test_map.dtd">
<map>
    <title>test</title>
    <topicref href="file1.md" format="mdita"/>
    <topicref href="file2.md" format="mdita"/>
</map>

my command:
dita -i .\test_map.ditamap -f pdf --theme dita-ot-docs_A4.yaml

I‘ve met the same problem, did you solve it?

Can you attach the Markdown source, not as an image, but as a file?

hello, Are you still following up on this issue?

I solved it by install ant set a Chinese-supported font.


Custom format for 0 is ignored

Description
If I use custom format #,###;-#,###;- on a cell containing a 0, it should display -, but actually displays 0.
To Reproduce

Set the custom format of a cell to #,###;-#,###;-
Set the data value of that cell to 0
Observe rendered cell

Pre-made spredsheet (made in recent excel version):
CustomFormatDashForZero.xlsx
_grid.Load(@"C:\path\to\CustomFormatDashForZero.xlsx", FileFormat._Auto);

Screenshots
Left: Excel
Right: Reogrid

Edition
Which edition of ReoGrid do you using?

WPF

Environment

OS: Windows 10
Language of OS: English

Official docs for this feature are available (found from https://github.com/unvell/ReoGrid/pull/336)
https://support.office.com/en-us/article/number-format-codes-5026bbd6-04bc-48cd-bf33-80f18b4eae68

@GrahamTheCoder Thanks! I will try to fix this within some days.

I have the same problems，
My data formats are:
#,##0,
Red


Cant start the electron app. Webpack error.

SyntaxError: ~/emerald-wallet-master/electron/webpack-main.js: Invalid number (55616:15)
  55614 |     if (typeof mode === 'function' || typeof mode === 'undefined') {
  55615 |         callback = mode;
> 55616 |         mode = 0777 & (~process.umask());
        |                ^
  55617 |     }

Steps that I followed:
1. Downloaded the repo
2. NPM install
3. ./dependencies.sh
4. npm run build:all (Tab 1) and npm run start:electron (Tab 2) in terminal

Also I think, a mobile wallet on your phone, like a native app would be helpful.

Oops! I had missed the change in "main"  in package.json.


How to work with transactions? Found some strange behavior.

I'm using spring-boot-starter-data-jdbc and infobip-spring-data-jdbc-querydsl-boot-starter(5.4.2) together.
In my tests with org.springframework.transaction.annotation.Transactional annotation I have the following code:
@Test
@Transactional
void test() {
    repository.save(ReportList.builder().userName("username").build());

    var reports = repository.query(query -> query
            .select(entityProjection())
            .from(QReportList.reportList)
            .fetch());
}

Expected result: variable reports is not empty
Actual result: variable reports is empty
If I remove @Transactional (or use default findAll method from QuerydslJdbcRepository) it starts to return results.
Am I doing something wrong?

After some time digging I found the following lines of code:
public class SQLQueryFactory extends AbstractSQLQueryFactory<SQLQuery<?>> {

    static class DataSourceProvider implements Provider<Connection> {

        @Override
        public Connection get() {
            try {
                return ds.getConnection();
            } catch (SQLException e) {
                throw new RuntimeException(e.getMessage(), e);
            }
        }
    }

ds.getConnection() returns new connection instead of existing one (with transaction).
I added querydsl-sql-spring with the following configuration and my code start to work as expected:
@Bean
public SQLQueryFactory queryFactory(com.querydsl.sql.Configuration configuration, DataSource dataSource) {
   var provider = new SpringConnectionProvider(dataSource);
    return new SQLQueryFactory(configuration, provider);
}

Should I stick with it or there is another way to work with transactions? Is it possible to add some details to README?

My understanding is that the issue is caused by 2 connections being used and changes in one are not visible in the other.
With SpringConnectionProvider connection is reused through Spring Transaction Management connection retrieval infrastructure which makes the issue go away.
I'll close the issue once the fix has been released.

Fixed in 6.2.1


query builder select with alias

Hi,
I am upgrading from CI2 to CI3 and encountered a problem with my old database-queries. There are several occasions where I build queries using active record / query builder with select-statements containing aliases (SQL: AS). They can be devided in two types:
Type 1: "table"."column" AS "alias"
And Type 2: "table"."column" AS "prefix.alias"
Type 1 works, type 2 gets escaped the wrong way. query builder generates "table"."column" AS "prefix"."alias", it adds two " around the .
I didn't find anything about aliases in the query builder documentation, except for select_avg, etc.
I really think this is a bug. I am not certain if my usage was "wrong" in the first place, but I need these prefixed aliases anyway ;)
Example Code
$a = $data = $this->db->select('table."column" as "prefix.alias"')->get("table");
var_dump($a);

outputs
SELECT "table"."column" as "prefix"."alias" FROM "table"

try 3.0.2
look here: https://github.com/bcit-ci/CodeIgniter/issues/4096

I uses the current 3.0-stable branch. Error still exists.

I can't classify this as a bug, because using the dot character inside select() has always meant identifier separation - there are just some limitations that we have to live with. It may've worked for you in the past, but that's rather accidental.
Still, after looking at the relevant code, there is something that could be done about this, but it would require at a new parameter for escape_identifiers() for this particular case and a small change in behavior (but a BC break nonetheless) in order to avoid similar complaints about other usages. Therefore, it can't happen in 3.0.x and will have to wait for 3.1.0.

Version 3.1.0 is there, I will suggest you to check it for this issue.


Passing a moment as data with key date results in error

I get the following error when I try to compile a template with the following data:
{
  date: moment(),
}

TypeError: mom.isValid is not a function
    at get_set__get (node_modules/moment/moment.js:512:20)
    at Object.<anonymous> (node_modules/moment/moment.js:506:24)
    at lambda (node_modules/handlebars/dist/cjs/handlebars/runtime.js:109:54)
    at Object.eval (eval at createFunctionContext (node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:254:23), <anonymous>:15:14)
    at main (node_modules/handlebars/dist/cjs/handlebars/runtime.js:173:32)
    at ret (node_modules/handlebars/dist/cjs/handlebars/runtime.js:176:12)
    at ret (node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:525:21)

Using instead:
{
  now: moment(),
}

Doesn't create any problems. Is date some kind of reserved key for data?

Could you post a complete example, including template or even better, create a fiddle? There is a template to start with.

Sorry, I don't have the time to do that right now unfortunately. But I think the error can be pretty easily deduced from the stack trace. I have specified the steps required to reproduce, it's really just the name of the data that is date and is a moment().

I tried to reproduce this issue with 4.0.8 (https://jsfiddle.net/9D88g/99/) and couldn't. Could you verify that you still have the problem?

@nknapp I can confirm that this problem does not happen anymore in 4.0.6, but 4.0.8 now breaks registering helpers, so I can't really test it with that version:
Error: Missing helper: "moment"
    at Object.<anonymous> (node_modules/meanie-mail-composer/node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js:19:13)

Reverting back to 4.0.6 and the missing helper error disappears. Not sure what is going wrong there, but a patch release shouldn't introduce breaking changes to the API of loading helpers I presume.
My code to load them is straightforward:
'use strict';

/**
 * Dependencies
 */
const fs = require('fs');
const path = require('path');
const handlebars = require('handlebars');

/**
 * Settings
 */
const PATH_HELPERS = path.resolve('./app/helpers/transform/');

/**
 * Register handlebars helpers
 */
fs.readdirSync(PATH_HELPERS)
  .forEach(file => {
    const ext = path.extname(file);
    const name = path.basename(file, ext);
    const helperPath = path.join(PATH_HELPERS, file);
    const helper = require(helperPath);
    handlebars.registerHelper(name, helper);
  });

With 4.0.6 and previous this works like a charm, but with 4.0.8 it breaks and throws the above error. Good I found it now, or all of our emails would have been broken...


change timestampextractor signature

@guozhangwang
Changed the signature of TimestampExtractor.extract(). Now it takes a ConsumerRecord instance. ConsumerRecord can provide more information to TimestampExtractor. Once KIP-32 is implemented, and the createTime and logAppendTime is exposed to a consumer,I expect it will be done through ConsumerRecord.

lgtm.