porthook_test.go:194: Client got wrong # calls, 1 != 2

linux amd64/ go1.5.1. mangos 774a176919d40f4a5da37f1cb5da5158430b3580
$ cd tests; go test -v
...
=== RUN   TestPortHook
--- FAIL: TestPortHook (0.10s)
    porthook_test.go:77: Testing Add Hook
    porthook_test.go:154: Waiting a bit...
    porthook_test.go:68: Hook called - 0!
    porthook_test.go:68: Hook called - 0!
    porthook_test.go:68: Hook called - 1!
    porthook_test.go:171: Exp C[0]: Add CLI tcp://<IP_ADDRESS>:59093 Open
    porthook_test.go:171: Exp C[1]: Rem CLI tcp://<IP_ADDRESS>:59093 Closed
    porthook_test.go:174: Got C[0]: Add CLI tcp://<IP_ADDRESS>:59093 Open
    porthook_test.go:177: Exp S[0]: Add SRV tcp://<IP_ADDRESS>:59093 Open
    porthook_test.go:177: Exp S[1]: Rem SRV tcp://<IP_ADDRESS>:59093 Closed
    porthook_test.go:180: Got S[0]: Add SRV tcp://<IP_ADDRESS>:59093 Open
    porthook_test.go:180: Got S[1]: Rem SRV tcp://<IP_ADDRESS>:59093 Closed
    porthook_test.go:194: Client got wrong # calls, 1 != 2

I'm thinking maybe I can just add a delay here to resolve the inherent race...  stay tuned.

So, that seems to work, and I believe I understand why.  The issue is that when we close a peer, the local side notices the close asynchronously, and closes in a go routine.  If we execute too quickly, or the go routine is scheduled too slowly, then the hook function won't get called before we get to the verification point in the test.
This does underscore one other problem, but I'm not sure its worth fixing.  The PortHook actually executes on a Pipe, and its possible that the Pipe outlasts (just slightly) the socket.
Fixing that would be desirable, but the current framework can't easily do it without introducing a nightmare of race condition fights.  In any event, folks registering PortHooks probably should not care if the hook gets executed slightly after the socket is closed.  In general, most applications using this never close their sockets anyway.


Exhaustive search with page/hitsPerPage functionality shows different counts on each page

Describe the bug
I wasn't able to test v0.30 until now but for me, using page and hitsPerPage do not show an exhaustive number of hits.
using different values of page and hits per page show different numbers.
Check this (the index data is not changing while testing):
(page: 0, hitsPerPage 10, results: 2539)

(page: 1, hitsPerPage 10, results: 2531)

(page 1, hitsPerPage 20, results: 2510)

(page 2, hitsPerPage 10, results: 2510)

(page 2, hits per Page 20, results: 2479)

To Reproduce
I have a dataset which I can share privately (e.g. via discord) where you can reproduce this as shown in the screenshots
Expected behavior
The totalHits count should not change
Meilisearch version: v0.30.0
Additional context
The index uses the distinctAttribute feature
This is a copy of my comment on https://github.com/meilisearch/product/discussions/335#discussioncomment-4315189

Hello @mmachatschek
Thanks for the report, @ManyTheFish, can you take a look at it?

Same issue here.

Few more observations which may be helpful (the index uses the distinctAttribute feature):

The closer the requested page to the end the more accurate is the totalHits value.

Same thing happens with estimatedTotalHits when limit & offset are used.

Hello everyone, @ManyTheFish has succeeded to reproduce the bug and is working on it! 😊

Fixed by #3217, will be released today in v0.30.2

Awesome. Thanks for the quick fix.
It works fine when "q" is specified. But if "q" is an empty string the issue still persists.

Thanks for the feedback @freescout-helpdesk
@ManyTheFish can you take a look at it again? 😊

unfortunately for me the issue wasn't solved with the update :/
here you can see the difference from the first to the last page (500 results off)
(tested this with the index that has a distinct attribute set, the exhaustive count of the non distinct indexes are correct)
(page 0, hitsPerPage 10, totalHits 2582)

(page 1, hitsPerPage 10, totalHits 2579)

(page 207, hitsPerPage 10, totalHits 2070)

actually it got worse, based on @freescout-helpdesk I tried to do searches with a query to verify his finding but for my index, meilisearch even stoped to count totalPages and counting the hits. (check screenshots)
This issue arises for all indexes
with a query (get results, no pages count, not totalhits count)

Closed by #3248
Will be released in v0.30.3 by the end of the week

Hi @curquiza
sorry to disturb everyone here :smiling_face_with_tear: but for me on the latest docker tag v0.30.3, the error persists. I still don't have an exhaustive count on my searches (only if I do NOT specify a search term)
(with query term, correct calculation of totalHits)

(no query term, wrong calculation of totalHits)

(no query term, should be last page, real last page would have been 2283 with 22823 total pages)

Don't be sorry @mmachatschek, we are.
We will work on this tomorrow

Hello @mmachatschek, I am really sorry for this set of bugs about finite pagination.
I think the next patch would be the last, however, in order to avoid reproducing the same mistake again and again, I put below the branch of Meilisearch containing the fix allowing anyone to double or even triple-check the changes:
https://github.com/meilisearch/meilisearch/tree/test-fix-on-finite-pagination
If you have Rust, you can pull the repository, checkout on the branch, and run Meilisearch with any dump using:
$ cargo run --release -- --import-dump=path/to/dump.dump

Again, sorry for the loss of time and thank you for your patience. 🙏

@ManyTheFish no need to say sorry!
The test-fix-on-finite-pagination branch works locally 👍 I can confirm the bug is fixed for me 🎉

Fixed by #3258 and will definitely be integrated to meilisearch when we will release v0.30.4 today
Sorry again for the inconvenience!


Feature request - Pagination -Filter

Submit a feature request
Hi,
Currently, in px-inbox it is only possible to load one big chunk of data in list-inbox. In our case, we have a huge list of data to load so it will have performance issue to load all these data.
Can you extend this control to have the possibility to have pagination, lazy loading or to be able to load data per period (for example last hour, last day, last week, etc)

@yoannGe You can already lazy-load the list items for px-inbox. Just add some more items to the listItems property later after the inbox is created.
Here's an example: https://codepen.io/davidleonard/pen/yPoXXQ?editors=1000
The example code is below:
<base href="https://polygit.org/px-*+PredixDev+*/webcomponentsjs+v0.7.24/polymer+v1.9.1/moment+moment+2.17.1/components/">
<!-- Load moment -->
<script src="https://cdn.rawgit.com/moment/moment/2.17.1/moment.js"></script>
<!-- Load webcomponentsjs polyfill and Polymer -->
<script src="webcomponentsjs/webcomponents-lite.min.js"></script>
<link rel="import" href="polymer/polymer.html"/>
<!-- Load theme -->
<link rel="import" href="px-theme/px-theme-styles.html"/>
<style include="px-theme-styles" is="custom-style"></style>
<!-- Load px-inbox -->
<link href="px-inbox/px-inbox.html" rel="import">

<px-inbox id="inbox" disable-auto-select sort-by="Title">
  <button id="loadBtn">Load more items</button>
</px-inbox>

<script>
  var inbox = document.getElementById('inbox');
  var loadBtn = document.getElementById('loadBtn');

  /* Add initial inbox items */
  var initialItems = [
    {
      "id": "0",
      "title": "CMS Cold Spot",
      "subtitle": "GT240182",
      "severity": "important",
      "date": "2016-10-05T01:29"
    },
    {
      "id": "1",
      "title": "Drum Level Anomaly",
      "subtitle": "Block 2",
      "severity": "information",
      "date": "2016-10-04T01:27"
    }
  ];
  inbox.listItems = initialItems;

  var counter = 2; /* Counter to generate some more unique IDs */
  loadBtn.addEventListener('click', function() {
    /* We'll just create a random item, but you could call your backend server
       and load some more here */
    var newItems = [{
      "id": counter + "", /* coerce ID to string */
      "title": "New Item " + counter,
      "subtitle": "This is item " + counter,
      "severity": "information",
      "date": "2016-10-05T01:29"
    }];
    /* Loop over our new items and add the to the listItems array in px-inbox */
    newItems.forEach(function(item) {
      /* We're using the Polymer `push` helper here to ensure px-inbox is notified
         when we mutate the array. Read the Polymer docs on object/array property
         effects here: https://www.polymer-project.org/1.0/docs/devguide/model-data */
      inbox.push('listItems', item);
    });
    counter++;
  });
</script>

You could implement pagination in much the same way, just load/unload items from the listItems property.


pkgsCross.x86_64-darwin.hello fails with infinite recursion at stdenv/generic/make-derivation.nix

Describe the bug
pkgsCross.x86_64-darwin.hello fails to build due to some recursion seemingly with "name" and "stdenv".
Steps To Reproduce
Steps to reproduce the behavior:

on current nixpkgs-unstable (nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' => "22.05pre363272.4d600814942")
nix-build '<nixpkgs>' -A pkgsCross.x86_64-darwin.hello --show-trace
it fails with this trace:

error: infinite recursion encountered

       at /nix/store/6bz7a206qrqd67blcvvl97v60b4f939m-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:228:14:

          227|       args = attrs.args or ["-e" (attrs.builder or ./default-builder.sh)];
          228|       inherit stdenv;
             |              ^
          229|

       … while evaluating the attribute 'stdenv' of the derivation 'MacOS_SDK-x86_64-apple-darwin-10.12'

       at /nix/store/6bz7a206qrqd67blcvvl97v60b4f939m-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:

          204|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          205|       name =
             |       ^
          206|         let

       … while evaluating the attribute 'disallowedRequisites' of the derivation 'apple-framework-CoreFoundation-x86_64-apple-darwin'

       at /nix/store/6bz7a206qrqd67blcvvl97v60b4f939m-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:

          204|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          205|       name =
             |       ^
          206|         let

       … while evaluating the attribute 'defaultBuildInputs' of the derivation 'stdenv-linux'

       at /nix/store/6bz7a206qrqd67blcvvl97v60b4f939m-nixpkgs/nixpkgs/pkgs/stdenv/generic/default.nix:99:14:

           98|     // {
           99|       inherit name;
             |              ^
          100|

       … while evaluating the attribute 'stdenv' of the derivation 'hello-x86_64-apple-darwin-2.12'

       at /nix/store/6bz7a206qrqd67blcvvl97v60b4f939m-nixpkgs/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:205:7:

          204|     // (lib.optionalAttrs (attrs ? name || (attrs ? pname && attrs ? version)) {
          205|       name =
             |       ^
          206|         let

Expected behavior
The build should succeed.
Additional context
Other cross compilation targets:

nix-build '<nixpkgs>' -A pkgsCross.aarch64-multiplatform.hello: succeeds
nix-build '<nixpkgs>' -A pkgsCross.aarch64-darwin.hello: fails with a much longer trace (see https://github.com/NixOS/nixpkgs/issues/126829 ?)

Notify maintainers
(Not sure who's relevant for this.)
Metadata
 - system: `"x86_64-linux"`
 - host os: `Linux 5.13.0-37-generic, Ubuntu, 21.10 (Impish Indri), nobuild`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.7.0`
 - channels(user): `"nixgl, nixpkgs"`
 - channels(root): `"nixpkgs"`
 - nixpkgs: `/home/user/.nix-defexpr/channels/nixpkgs`

IIRC cross compiling to x86_64-darwin was never supported anyways. The only darwin cross target that works is aarch64-darwin, but only from x86_64-darwin.

Cross compiling to darwin requires the macOS SDK and can only be done from a darwin host. Closing for now.

Maybe a message saying that it's unsupported could be given instead of producing a stack overflow?

IIRC it's not easy to solve, see also https://github.com/NixOS/nixpkgs/issues/126829#issuecomment-861374370


Implement models

Short description

Implemented all the models (except the user model, that happens in #12). Note that I had to make some changesto the ERD (see below for details), but the structure has largely remained the samer.
I' ve also taken the liberty to already implement some useful cached_propertys in the models. (If you are unfamiliar with them: they are basically methods on the model objects that behave like attriutes, so you can use them just like you use the "real" attributes. For example, you can now use ward.available_beds to get the number of free beds in a ward, even though this is not stored in the database.)
Proposed changes

implement the models
adjust the test data fixture, tests, index view and patient form to match the new DB scheme

Side effects

if you created a feature branch for your current issue, I highly recommend rebasing once this PR is merged, because there will be a lot of breaking changes

Resolved issues

Fixes: #11

Biggest differences to before: "Room" model to bridge the gap between wards/beds, and the User model is just how it currently is, will be changed to what we actually want in #12. Also a bunch of somewhat duplicate fields (like is_private_room on the BedAssignment) have instead been solved via a cached_property.
And finally the User model should of course be connected 1:n to the creator field in each model, I've ommitted the connection so the picture would not get too cluttered, but of course it is done in the code 😄

What's the difference between a ward and a room? Aren't they the same thing? In the diagram, one ward has multiple rooms. If so, the below screenshot demonstrate one of the wards, is it right?

What's the difference between a ward and a room? Aren't they the same thing? In the diagram, one ward has multiple rooms. If so, the below screenshot demonstrate one of the wards, is it right?

Yes, exactly. That's one ward with 14 rooms. We need some way of differentiating between the two, and this just seemed the easiest. Without the `Room
I was also thinking in terms of maybe later on (not the MVP, of course) allowing administrators to create a ward by setting its name etc, and the number of rooms; then afterwards just showing a list of those rooms, where they can set how many beds each room has.


Enable eslint order-in-components for vue components and fix current state

What is the motivation for adding / enhancing this feature?
We should follow recommended rules https://vuejs.org/v2/style-guide/#Component-instance-options-order-recommended. Once we provide correct order we can easier/faster work with vue components.
What are the acceptance criteria

provide recommended order

Can you complete this feature request by yourself?
YES
Additional information
Here is description of order-in-components property https://github.com/vuejs/eslint-plugin-vue/blob/master/docs/rules/order-in-components.md

From one side I'd say it will make components more readable BUT  I also think it will just complicate peoples life and make them deal with countless eslint errors responsible only for reordering components logic. I just don't think this small enhancement is work dealing with all of this .
If it would be my internal company project I would say yes but for open source I'm against. I'm keeping issue open tho to head more opinions.

IMO it would be great to do this and get feedback from contributors (it's fine or wrong). It's not big deal to disable this option again. Of course it will work only for theme b/c in core we have js files instead of vue. In this case our scripts section is not so long (in most cases a few lines). So we should avoid countless eslint errors ;)

@filrak did you change your mind? :)


Docker Failed on Net New Setup

Cloned the repo v.0.11.0
Followed the steps outlined for the docker repo.  (docker compose build app)
Got the following error message when starting the container (i.e. docker compose up)
onetime-app    | onetime[1]: no implicit conversion of nil into String
onetime-app    | Error loading config:
onetime-app    | onetime[1]: Error loading config:
onetime-app exited with code 1
I have no clue how to resolve it.

After making a copy of the config.example file in the /etc folder and renaming it just config. I was able to get past this error. The documentation should be improved in the docker section


GraphQL Api - Custom Parameters from parameters.json

Is your feature request related to a problem? Please describe.
Unless I missed something, there is no way to pass variables into the CloudFormation template of graphql custom resources. Parameters get replaced during build process.
Describe the solution you'd like
Be able to add custom parameters to parameters.json to use in the CustomResources.json stack template.
Describe alternatives you've considered
Hardcoding the values in the CloudFormation template I guess.
What I've been trying so far
backend -> api -> graphql -> stacks -> CustomResources.json
"Parameters": {
  ...
  "S3DeploymentBucket": {
    "Type": "String",
    "Description": "The S3 bucket containing all deployment assets for the project."
  },
  "S3DeploymentRootKey": {
    "Type": "String",
    "Description": "An S3 key relative to the S3DeploymentBucket that points to the root\nof the deployment directory."
  },
  "authRoleName": { // <------------ Mine
    "Type": "String",
    "Description": "My Custom Parameter"
  }
},

backend -> api -> graphql  -> parameters.json
{
    "AppSyncApiName": "graphql",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "AuthCognitoUserPoolId": {
        "Fn::GetAtt": [
            "authcognito6a5cad5b",
            "Outputs.UserPoolId"
        ]
    },
    "authRoleName": {
        "Ref": "AuthRoleName"
    }
}

After build, parameters.json inside build folder:
backend -> api -> graphql  -> build -> parameters.json
{
    "AppSyncApiName": "graphql",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "AuthCognitoUserPoolId": {
        "Fn::GetAtt": [
            "authcognito6a5cad5b",
            "Outputs.UserPoolId"
        ]
    },
    "S3DeploymentBucket": "graphql-deployment",  //  <-------- Added by amplify
    "S3DeploymentRootKey": "amplify-appsync-files/xxxxxxxx"  //  <-------- Added by amplify
}

> amplify push
...
UPDATE_FAILED      CustomResourcesjson AWS::CloudFormation::Stack Sun Apr 21 2019 15:44:38 GMT+0100 (WEST) Parameters: [authRoleName] must have values
⠧ Updating resources in the cloud. This may take a few minutes...
...

@UnleashedMind Is it possible to reference authRole ressource inside api nested stack template differently. I am trying to add a policy that authorizes "authenticated" lambdas to query my GraphQL api.
backend -> api -> graphql -> stacks -> CustomResources.json
"GraphQLApiRequestPolicy": {
  "Type": "AWS::IAM::Policy",
  "Properties": {
    "PolicyName": "GraphQLApiRequestPolicy",
    "Roles": [
      {
        "Fn::ImportValue": "AuthRoleArn"
      }
    ],
    "PolicyDocument": {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "GraphQLApiRequestPolicyDocument",
          "Effect": "Allow",
          "Action": "appsync:GraphQL",
          "Resource": "...."
        }
      ]
    }
  }
}

"Fn::ImportValue": "AuthRoleArn" doesn't work as AuthRoleArn is not exported in root stack template.

@chihab
The GraphQL API build process does not remove your custom parameter entries into the parameters.json file, I couldn't reproduce what you reported, could you double check and confirm?
As for your second post, the question about authorizing lambda function to access your GraphQL API, I'm not sure why that lambda function, as the client of the GraphQL API, should be created as part of the GraphQL API. Could you describe in more details on the architecture of your project.

I had the same issue when trying to add a reference to AuthRoleName in AppSync API parameters.json. amplify CLI version is 1.1.7. So I ended up hardcoded the value.

@chihab If you add the parameter definition to your nested stack, the CLI should automatically configure forwarding that paramter down to your nested stack. For example, if you have a custom stack at stacks/MyCustomStack.json and you add this parameter definition:
{
    "Parameters": {
	"MyCustomParam": {
		"Type": "String",
		"Description": "Custom Param."
	}
    }
}

And you then pass the param in parameters.json
{
  "MyCustomParam": "SomeValue"
}

Then the param should correctly be forwarded down to your nested stack. If you do not see this behavior please respond with what version of the CLI you are using.

I've done the test multiple times, I can confirm that params on parameters.json are not forwarded to api custom nested stacks. Compiled parameters.json doesn't include my custom parameters.
"Parameters": {
  ...
  "S3DeploymentBucket": {
    "Type": "String",
    "Description": "The S3 bucket containing all deployment assets for the project."
  },
  "S3DeploymentRootKey": {
    "Type": "String",
    "Description": "An S3 key relative to the S3DeploymentBucket that points to the root\nof the deployment directory."
  },
  "authRoleName": {
    "Type": "String",
    "Description": "My Custom Parameter"
  }
},

backend -> api -> graphql -> parameters.json
{
    "AppSyncApiName": "graphql",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "AuthCognitoUserPoolId": {
        "Fn::GetAtt": [
            "authcognito6a5cad5b",
            "Outputs.UserPoolId"
        ]
    },
    "AuthRoleName": "HardcodedRoleNoWayToGetAuthRoleRefHere"
}

backend -> api -> graphql -> build -> parameters.json
{
    "AppSyncApiName": "graphql",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "AuthCognitoUserPoolId": {
        "Fn::GetAtt": [
            "authcognito6a5cad5b",
            "Outputs.UserPoolId"
        ]
    },
    "S3DeploymentBucket": "graphql-xxxxxxxxx-deployment",
    "S3DeploymentRootKey": "amplify-appsync-files/yyyyyyyyyyyyy"
}

Passing down parameters works well on other nested stacks. I've tested on function and storage precisely.
Amplify cli version:  1.6.1
@mikeparisstuff  my bad about lambdas

I am trying to add a policy that authorizes "authenticated" lambdas role (from identity pool) to query my GraphQL api.

Also having this issue... custom params in parameters.json are not picked up by the build step for some reason...

@coop182 Hae you added the custom parameter definition to your custom stack's template? For example, I was able to add:
{
  "Parameters": {
    // ... other params
    "MyCustomString": {
      "Type": "String",
      "Description": "A test string"
    }
  },
  // ... resources, outputs, etc
}

then add to parameters.json:
{
    // ... other params
    "MyCustomString": "SomeValue"
}

I then ran amplify push which succeeded with the new custom params being passed through as expected.

@mikeparisstuff do parameters.json get overwritten if I update auth or api for example?
At the moment, I saw that AppSyncApiName and AuthCognitoUserPoolId  were automatically added. If I to delete auth (amplify auth delete), will amplify-cli remove only AuthCognitoUserPoolId key from parameters.json or rewrite the entire file.
{
    "AppSyncApiName": "API_NAME",
    "DynamoDBBillingMode": "PAY_PER_REQUEST",
    "AuthCognitoUserPoolId": {
        "Fn::GetAtt": [
            "authcognitoa<ID>",
            "Outputs.UserPoolId"
        ]
    },
// Custom Params
    "FlightDataSource": "FlightTable",
    "BookingDataSource": "BookingTable"
}

Hi @chihab, if you're still facing this issue, you should be able to define your lambda functions by creating them via TK, and granting authorization through https://docs.amplify.aws/cli/function/#access-existing-aws-resource-from-lambda-function, and creating a new lambda with access via https://docs.amplify.aws/cli/graphql/custom-business-logic/#lambda-function-resolver.


Fetch changelogs concurrently for significant speed boost

Inspired by the suggestions in #66, this PR incorporates the concurrent-ruby gem to fetch changelogs concurrently. Doing so can yield a significant speed boost.
For example, for a project with 80 outdated gems, bundle ui in this PR now takes just 7 seconds to run from startup to rendering the complete list of changelogs:
real	0m7.025s
user	0m2.131s
sys	0m0.521s

Whereas bundle ui on the main branch in the same scenario takes 36 seconds:
real	0m36.357s
user	0m2.531s
sys	0m0.684s

For now I'm considering this a proof-of-concept. It may need testing and more error handling (e.g. to deal with HTTP 429 errors) prior to merging.

Wow! Super clean solution! 👏
429 Too Many Requests might be an issue, but test it out on a huge project.¹ Maybe GitHub rate limit is high enough, I don't know. I remember that CocoaPods (Obj-C/Swift package manager) used GitHub as their repository directly and it was working fine.
Also, maybe you can somehow limit the amount of parallel requests that are made and/or retry failed requests that fail due to 429 Too Many Requests.
¹ - test it before optimizing something that turns out it doesn't have to be optimized.

Thanks for reviewing! My understanding is that future from concurrent-ruby uses an unbounded number of threads by default, so for a very large number of requests, we could potentially encounter 429 errors.
That said, it is fairly trivial to set a fixed upper bound for the size of the future thread pool. I think I'll set an upper bound to just to be safe, like 50 threads max, and then test against a large project to confirm the 429s aren't a problem.


[Backport] Downgrade io_bazel_rules_go to v0.27.0 restore Bazel 3.x support

Backports https://github.com/grpc/grpc/pull/29596

Unrelated Ruby and PHP flakes, merging.


flutter 'share' plugin data sharing issue via whatsapp

I am using flutter 'Share' plugin in my app to share the content via platform like whats app , gmail etc.
When I am trying to send the more data to via gmail, it's working properly but via whats app, only some portion  of the data gets send.
If anybody have idea on this issue, please assist me.
Below is my code snippet.
StringBuffer strBuffer = StringBuffer();
for (int i = 0; i < shareNoteList.length; i++)
{
strBuffer.write('Title: ' +shareNoteList[i].title +'\n\nDescription: ' +shareNoteList[i].description +'\n\n\n');
}
Share.share('$strBuffer');

@pkmarathe
You want to share some pure text content, right?
What's exactly the content of strBuffer when this problem occurs?

Yes. Content is like text notes.

@pkmarathe
I think it could be resulted from that other applications you want to share like Facebook may limit the text length.
I would recommend you to resolve this issue using other channels like Stackoverflow as it seems not a flutter issue.