Logging revamp (#64)

Logging revamp

This change revamps logging in the following ways:

In the buffer (and any place really) where an error is returned,
the log type is "Error" consistently, rather than info.

In ALL middlewares is a debug-level log that is emitted when a
request is beginning to be served, and once when the ServeHTTP
method exits (using defer). This allows, under debug conditions,
a way to trace the flow of a request.

Finally, an important log entry which I feel was always missing,
was an info-level entry that mentioned which specific backend
server a particular request hit.

More logging improvements
More logging improvements
Http Streaming forwarder wasn't using ProxyWriter at all.
This was a fix made by Roy Sundahl. I'm merging it in here.
Attach standard logger as error logger for reverse proxy.
Revert "Attach standard logger as error logger for reverse proxy."
This reverts commit a39e0e7a1c9ecbd13af945a684a81fcaaa5a51f2.
Added an HTTP Request serializer for logging
Updated Serializer for http.Request objects
The challenge with logrus is it uses json.Marshall to serialize
object fields, but will log nothing if there's a marshalling error.
This prevented http.Request from getting serialized, and thus prevented
the entire entry from being logged.
By using httputil.DumpRequest, this change serializes
all http.Request objects (even if there's an error), and makes
sure a log entry is pushed.
Use JSON Serializer so the request is machine-parsable.
Revert "Use JSON Serializer so the request is machine-parsable."
This reverts commit a99a99299f2300dcaab1bb479c3f53cc1d76cc50.
Request serializer was a bad idea.
Attempting to serialize requests was a bad idea.
Serialize Http Request
Go fmt

Fixed UT

Due to different golang versions, the fields in the struct
http.Request might be different across different runs of
the Unit Test. That means verifying that an http.Request correctly
serializes to a JSON String is not a fixed predictable operation
that is also portable across golang versions.
This change modifies the test to simply ensure length of the
generated string is more than zero.
Gated all expensive logs behind their log level.
This will ensure that if the log level is
what the log entry is, expensive processing
of serializing a full HTTP request isn't performed
per log entry.

I'm going to merge this in. BTW, I added benchmark tests which can be run as:
go test -bench=.
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60371/, code: 200, Length: 16, duration: 1.002203537s
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60375/, code: 200, Length: 33, duration: 560.93µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60379/, code: 200, Length: 50, duration: 417.242µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60383/, code: 200, Length: 0, duration: 328.225µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60387/, code: 304, Length: 0, duration: 318.152µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60391/, code: 200, Length: 2, duration: 382.043µs tls:version: 303, tls:resume:false, tls:csuite:c02f, tls:server:
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60395/, code: 200, Length: 5, duration: 425.489µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60399/, code: 200, Length: 33, duration: 368.742µs
INFO[0001] vulcand/oxy/forward/httpstream: Round trip: http://<IP_ADDRESS>:60403/, code: 200, Length: 5, duration: 509.105µs
OK: 9 passed
BenchmarkLoggingDebugLevel-8   	  100000	     12012 ns/op
BenchmarkLoggingInfoLevel-8    	 3000000	       391 ns/op
PASS
ok  	github.com/vulcand/oxy/stream	3.949s

The difference is clearly noticable.


Added support for es7 async/await

With this feature you can write asynchronous functions synchronous way, you don't need promises.
async status() {
    try {
        let { data } = await axios.get('status');
        console.log(data);
    catch(err) {
        console.log(err);
    }
}

We may also want "babel plugin dynamic import"

@ankurk91 Actually I don't know why do we need that? Anyway this is working fine.

Does anyone have an argument for why this shouldn't be merged? If not, I'll pull it in.

@lkmadushan
Please rebase to fix merge conflicts.

fixed failing tests


Deploying dodal

What are the steps to deploy dodal for testing changes for:

Labs where deployments can be made anytime
Beamlines where there is a regular deployment cycle e.g. weekly

Within MX, we have our deployment process for dodal + our bluesky plan library, MX-Bluesky documented here:
https://diamondlightsource.github.io/mx-bluesky/main/developer/general/how-to/create-a-release.html and https://diamondlightsource.github.io/dodal/main/index.html
Since our MX-Bluesky changes normally involve changes in dodal too, it makes sense to deploy them together. I imagine the same goes for other groups. It would be nice to have some proper documentation about this though


openshift: PR gating

I'd like to try to guarantee that openshift-related PRs to acs-engine are reviewed and signed off by an openshift team owner in addition to whatever other review/sign-off requirements acs-engine may have.  In the case that one openshift team owner submits a PR, a separate one should review and sign off.
Because of the structure of acs-engine it's difficult to neatly define "openshift-related".  Perhaps "touches code under /pkg/openshift or PR submitted by a RHer" is an adequate starting proxy?
Suggest "openshift team owner" to include pweil-, kargakis, jim-minter.
It would be handy for openshift team owners to be able to easily see the queue of PRs that need their review, e.g. via the GH reviewer or assignee mechanisms.

@jackfrancis @CecileRobertMichon @pweil- @kargakis thoughts on the above rough idea?

+1, a team to tag into PRs would be nice in addition to using the assignment mechanism just for making sure the OpenShift folks who aren't specifically assigned are aware of changes.

+1. You should also use the orchestrator/openshift label on openshift PRs + issues to identify them in the queue (in addition to tagging the relevant people/team).

"touches code under /pkg/openshift..."

And parts/openshift if/when we break out the master.sh & node.sh there

@CecileRobertMichon I don't have the ability to add labels to existing PRs.

Btw github already supports a form of our OWNERS file process, albeit it's slightly different in that the CODEOWNERS file needs to exist in certain places inside a repo and it's only used for requesting reviews and not for gating PR merges.
https://help.github.com/articles/about-codeowners/

cf https://github.com/Azure/acs-engine/issues/2690

OWNERS files are in place: https://github.com/Azure/acs-engine/pull/2791
Prow CI setup in https://github.com/Azure/acs-engine/pull/2923

Done :tada:
/assign
/close


make transforms v2 get_params a staticmethod

Addresses https://github.com/pytorch/vision/pull/7159#issuecomment-1419424035. I was "obsessed" with making get_params available on the class in #7153 and completely forgot to check whether this works on instances as well.
cc @vfdev-5 @bjuncek

can we also check that calling instance.get_param() is also jit-scriptable below in test_get_params_jit() ?

We can't without extra configuration. We would need to add instructions how to actually call get_param, but so far we only have parameters to instantiate the transform.


V<IP_ADDRESS>

v<IP_ADDRESS> has all the cool stuff:
BLS update for 22.04 builds
Pool and node bug fixes
Added a fresh checkpoint
Node operators and pool's are encouraged to update
Peace and love to all

DeeeepToke


didt FF1 without GELU hang pcie alive

Based on FW80.10.4 bundle baseline didt testing results, this issue will be used to track debug activities related to specific test case failure type.
Failure description and reproduce steps
Test case: FF1 without GELU
Failure behavior: test execution hangs, pcie is alive and device can be debugged, warm reset fix the hang
Affected systems/boards:
bgd-lab-t3002 board 3
Reproduce steps - running test: WH_ARCH_YAML=wormhole_b0_80_arch_eth_dispatch.yaml pytest models/experimental/falcon_7b/tests/test_reproduce_hang_matmul.py -k "test_reproduce_matmul_2d_hang and ff1-hang and 2chips"
Note: Please note that numbef of test iterations need to be set using NUM_ITERATIONS variable inside test_reproduce_hang_matmul.py depending on system failure speed rate - for this use case failure is often seen around 1M iterations.
Reproduce steps - running ttp capture of ARC data: ttp didt_multichip --args out=ttp_data.csv,num_iters=1800000
Note: ttp and safe mode is set up from tt-experiment repo.
Note: This failure is under investigation more debug results will be provided when finished.

Debug updates
Test case: FF1 without GELU
Machine: bgd-lab-t3002 board 3
Failure behavior: test execution hangs, pcie is alive and device can be debugged, warm reset fix the hang
Branch: skrsmanovic/didt_hang_l1_debug - latest didt branch with added debug postcodes in L1
Reproduce steps - running test: pytest tests/didt/test_ff1_matmul.py::test_ff1_matmul -k "without_gelu and 2chips" --iterations 1000000
Debug infrastructure
syseng repo: https://yyz-gitlab.local.tenstorrent.com/tenstorrent/syseng
syseng repo setup:
cd syseng/src/t6ifc/t6py
./bin/venv-create
source bin/venv-activate.sh

Commits https://github.com/tenstorrent/tt-metal/commit/24b67625bd85b0f734d76d62a7fe1b3c4747b8d0 and https://github.com/tenstorrent/tt-metal/commit/0b551cc1a638ec7211591c74b0e81edb565f16c4 are leaving some postcodes in L1 memory that can help us to navigate where kernel execution hangs. To read L1 after hang read-noc command from syseng repo will be used.
Debug postcodes will be left at address 0x15200(compute kernel) and 0x15240(data movement kernel) in L1 memory.
read-noc syntax:
read-noc --interface <pci_interface> --chip_x <X> --chip_y <Y> --x <x> --y <y> --num_words <num_words> --addr <addr>
<pci_interface> is pcie interface to which board is attached for example pci:0, pci:1, pci:2, pci:3....
<X> is x coordinate of chip in chip grid - can be observed from tt-smi command
<Y> is y coordinate of chip in chip grid - can be observed from tt-smi command
<x> is x coordinate of core inside chip (address of specific core in chip grid that we want to read from)
<y> is y coordinate of core inside chip (address of specific core in chip grid that we want to read from)
<num_words> is number of words (word is 4 bytes) to be read from memory
<addr> is L1 address to be read from

Debug steps
Once test hangs first it is important to determine chip that is hang, for that purpose we can look at test output, last id that shows in test output is id of chip that hangs:
2024-09-24 13:08:18.897 | INFO     | tests.didt.matmul_test_base:run_matmul:167 - Start sync device id: 0
2024-09-24 13:08:18.899 | INFO     | tests.didt.matmul_test_base:run_matmul:169 - End sync device id: 0
2024-09-24 13:08:18.899 | INFO     | tests.didt.matmul_test_base:run_matmul:167 - Start sync device id: 1
2024-09-24 13:08:18.899 | INFO     | tests.didt.matmul_test_base:run_matmul:169 - End sync device id: 1
2024-09-24 13:08:18.899 | INFO     | tests.didt.matmul_test_base:run_matmul:199 - Iteration = 614015, done!
2024-09-24 13:08:18.899 | INFO     | tests.didt.matmul_test_base:run_matmul:167 - Start sync device id: 0
2024-09-24 13:08:18.901 | INFO     | tests.didt.matmul_test_base:run_matmul:169 - End sync device id: 0
2024-09-24 13:08:18.901 | INFO     | tests.didt.matmul_test_base:run_matmul:167 - Start sync device id: 1

Based on this log chip with id 1 hangs (right chip with coordinates 1, 0).
Compute kernel analysis
Read out of postcodes in compute kernel:
[1930] skrsmanovic:bgd-lab-t3002-special-skrsmanovic-for-reservation-3924457 /proj_sw/user_dev/skrsmanovic/syseng/src/t6ifc/t6py > read-noc --addr 0x15200 --interface pci:3 --chip_x 1 --chip_y 0 --x 1 --y 1 --num_words 10
00: 0x00015200 => 0x99deda99
01: 0x00015204 => 0x01c1b811
02: 0x00015208 => 0x00000001
03: 0x0001520c => 0x00baba01
04: 0x00015210 => 0x08baba01
05: 0x00015214 => 0x00002036
06: 0x00015218 => 0x00000c00
07: 0x0001521c => 0x00002636
08: 0x00015220 => 0x000000cc
09: 0x00015224 => 0x00000080

Comparing last post code on address 0x1520c with modified compute kernel code it is clear that compute kernel stuck at: https://github.com/tenstorrent/tt-metal/blob/0b551cc1a638ec7211591c74b0e81edb565f16c4/tt_metal/hw/ckernels/wormhole_b0/metal/llk_io/llk_io_unpack.h#L50-L72 waiting for all tiles of operand 0 to be received.
Data movement kernel analysis
When we are analyzing data movement kernel postcodes it is important to note how data movement is organized in case of test specific matmul operation (where data is stored, how it is multicasted 1d or 2d etc..). In case of this particular run it can be observed that all cores with x coordinate 8 are stuck with same postcode (other cores are passing this failing point):
[2014] skrsmanovic:bgd-lab-t3002-special-skrsmanovic-for-reservation-3924457 /proj_sw/user_dev/skrsmanovic/syseng/src/t6ifc/t6py > read-noc --addr 0x15240 --interface pci:3 --chip_x 1 --chip_y 0 --x 8 --y 1 --num_words 10
00: 0x00015240 => 0x00000024
01: 0x00015244 => 0x0001a360
02: 0x00015248 => 0x08baba01
03: 0x0001524c => 0x00018fe0
04: 0x00015250 => 0x00000008
05: 0x00015254 => 0x77cccc77
06: 0x00015258 => 0x77cccc77
07: 0x0001525c => 0x77cccc77
08: 0x00015260 => 0x77cccc77
09: 0x00015264 => 0x77cccc77

Looking at modified data movement kernel code:
https://github.com/tenstorrent/tt-metal/blob/0b551cc1a638ec7211591c74b0e81edb565f16c4/ttnn/cpp/ttnn/operations/matmul/device/kernels/dataflow/reader_bmm_tile_layout_in0_sender_receiver_padding_block_sharded.cpp#L171-L187
it is clear that kernel is stuck waiting for all semaphores to atomically increment.

bgd-lab-t3001, board 0, same signature

bgd-lab-t3004 board 1 after rebase (branch: ppopovic/rebased_2) with FW<IP_ADDRESS>, same signature FF1 without GELU

After diagnosing PGOOD problems and reworking boards, this is no longer observed


Change text for conditions in pagelist component

Change the condition text used in the "Your questions" list
Trello card: https://trello.com/c/ifg2UBf7/1964-change-the-content-describing-routes-in-the-question-list-pag
Conditions are displayed in the page list component with a text description.
This commit changes the way conditions are described.
It:

condenses the text into a single line paragraph
shortens the content
includes page numbers for the question a condition goes to

To support these changes, I've changed the tests. The tests now explicitly check the result of getting a description against a string.
I chose this over referencing the translations because it's so much easier to read and understand.
I chose to test the condition_description method over the testing the sub-methods to try and test the behaviour rather than the implementation.
I considered checking the rendered component for the text. This makes working out why a test failed difficult. Instead I've chosen to check the result of the method and then check the text is included in the view.

What problem does this pull request solve?

Things to consider when reviewing

Ensure that you consider the wider context.
Does it work when run on your machine?
Is it clear what the code is doing?
Do the commit messages explain why the changes were made?
Are there all the unit tests needed?
Has all relevant documentation been updated?

Looks good to me! Thanks both! :)


Pass some go-alpm through golint for package cleanup

Just underscore removals and some golint indicated changes to standard go code.}
Effort to standardize code style between yay and go-alpm

You done broke the tests :P


CpiAccount deprecated warning incorrect?

The Anchor compiler gives a warning that the CpiACcount is deprecated. However CpiAccount has a distinct usage for remote contract calls. The docs also don't mention there being a deprecation. Is the warning an error?
The code is part of a smart contract that makes a CPI to a Token contract to mint new coins to a specific address.
Code:
#[derive(Accounts)]
pub struct Interaction<'info> {
    #[account(mut, has_one = owner)]
    mint: CpiAccount<'info, TokenAccount>,
    // #[account(mut, "mint == to.mint")]
    to: CpiAccount<'info, TokenAccount>,
    #[account(signer)]
    owner: AccountInfo<'info>,
    token_program: AccountInfo<'info>,
}

Warning:

warning: use of deprecated struct anchor_lang::CpiAccount: Please use Account instead
--> programs/contractMint/src/lib.rs:27:11
|
27 |     mint: CpiAccount<'info, TokenAccount>,
|           ^^^^^^^^^^
|
= note: #[warn(deprecated)] on by default
warning: use of deprecated struct anchor_lang::CpiAccount: Please use Account instead
--> programs/contractMint/src/lib.rs:29:9
|
29 |     to: CpiAccount<'info, TokenAccount>,
|         ^^^^^^^^^^

The warning is not an error. It's recommended to use Account instead.

Thanks for the super fast response. Quick follow up, in my comment line, there is an account annotation // #[account(mut, "mint == to.mint")]. How do I call the mint public address to match the TokenAccount's mint address?
#[program]
pub mod contract_mint {
    use super::*;
    pub fn interaction(ctx: Context<Interaction>, amount: u64) -> ProgramResult {
        let cpi_accounts = MintTo {
            mint: ctx.accounts.mint.to_account_info().clone(),
            to: ctx.accounts.to.to_account_info().clone(),
            authority: ctx.accounts.owner.clone(),
        };

        let cpi_program = ctx.accounts.token_program.clone();
        let cpi_ctx = CpiContext::new(cpi_program, cpi_accounts);
                token::mint_to(cpi_ctx, amount)?;
        Ok(())
    }
}

#[derive(Accounts)]
pub struct Interaction<'info> {
    #[account(mut, has_one = owner)]
    mint: CpiAccount<'info, TokenAccount>,
    // #[account(mut, "mint == to.mint")]
    to: CpiAccount<'info, TokenAccount>,
    #[account(signer)]
    owner: AccountInfo<'info>,
    token_program: AccountInfo<'info>,
}

#[error]
pub enum ErrorCode {
    #[msg("The derived interaction signer does not match that which was given.")]
    InvalidInteractionSigner,
}

#[account(mut, constraint = mint.mint == to.mint)]

If you have further questions please ask them in discord.


ocm: Check for ID provider match as well when creating shares

When creating OCM shares, we need to take both the user ID as well as the provider ID as input, as the same user ID can be present across mesh providers, but the combination of the provider ID and user ID would be unique. I changed the logic for the JSON driver, but for ldap, there's a comment that says  this is screaming for errors if filter contains >1 %s, tracked in https://github.com/cs3org/reva/issues/326. So that needs to be corrected.

@ishank011 for OCM shares, you need to take as userID whatever is given by sharer OCM service when forwarding the invitation. The IdP and UserID sent by the remote OCM provider does not neccesary needs to exist on the receiving part, indeed, that will be the normal case.

@labkode Okay so are we sure that a user's ID, as provided by the sharer OCM service, would be unique across all the providers?

@ishank011 I got your question. You're right, the user id provided by the original sharer is only unique inside that system, for us, to be unique we need take in consideration the provider.


laravel boot the modules in Ascending order ignoring the priority value for each module

hello, my problem was mentioned before in this issue
https://github.com/nWidart/laravel-modules/issues/994
I want to boot the modules by the order(priority) I determined in module.json
but laravel overriding that and boot the service provider for each module instead of letting that task to (nWidart/laravel-modules)
1-for each module, I tried to delete from its composer.json the service provider name, but it didn't work
2-in main app composer.json, tried to use (dont-discover) feature, it worked successfully but means I needs to disable auto-discover for each module manually
so, any solution to boot each module service provider by the priority I want ?

you can edit file module.json in each package

i found out the solution to the problem, to simplify it for example:
if we have 3 modules
moduleX( priority:2 )
moduleY( priority:1 )
moduleZ( priority0 )
in normal situation, modules ordering will be (Z > Y > X)
but if moduleZ depends on moduleX (in composer.json)
then the laravel will ignore modules priority and boot first moduleX, then moduleZ, finally moduleY

Mean It is normal case


verify* subcommands should share signature verification flag parsing

Description

There's a lot of duplicated and almost-duplicated code in the verify, verify-blob, verify-attestation, and verify-blob-attestation subcommands. I wrote a short doc suggesting how to refactor them and would like feedback: https://docs.google.com/document/d/1OBg0OuoIDDv8Sy8bXNU9OnZvji82JhgyjYD2ykXhY4o/edit?usp=sharing&resourcekey=0-fg8AokOOQAtyKdpelRSeFA

Overall LGTM!
FWIW the intended outcome of the sigstore-go work (proposal), along with the protobuf-specs repo, is to remove a lot of redundancy. The plan is then that Cosign becomes a relatively thin wrapper.
I think the proposed doc is broadly consistent with this plan because it deals mostly with flag parsing, but it's worth keeping in mind for the purposes of future-proofing.

Nice! Yeah, maybe we can start with chunking out the smaller verification pieces in sigstore-go? e.g. verifying a cert against the cert related options?
FWIW I started a PR that combines all the verification code here: https://github.com/sigstore/cosign/pull/2461
It's a little hard for me to manage since we're making a bunch of changes at the same time.
Basically, from that PR, the steps are all equivalent (they're numbered in the comments), except that the verification algorithm for blobs and attestations and the check claims (e.g. checking that the attestation subject digest matches the artifact) are different.

Would definitely love this in sigstore-go to start.

Is there agreement that this should go into sigstore-go from the start?
My only concern is that it doesn't look like cosign currently uses signstore-go. I'd be hesitant to add something there that will eventually get stale.

IIUC @asraa meant that "from day one, sigstore-go should be built this way" rather than "we should do this in sigstore-go before we implement it in Cosign"


PERF: Combine conditions in ImageRegion::IsInside().

Combining conditions into a single statement may allow the compiler to optimize better.  More concise and easier to read.
PR Checklist

[X] No API changes were made (or the changes have been approved)
[X] No major design changes were made (or the changes have been approved)
[X] Added test (or behavior not changed)
[X] Updated API documentation (or API not changed)
[X] Added license to new files (if any)
[X] Added Python wrapping to new files (if any) as described in ITK Software Guide Section 9.5
[X] Added ITK examples for all new major features (if any)

To avoid any confusion with IsInside(const Self &), can you please adjust the commit subject to something like:
PERF: Combine conditions in ImageRegion::IsInside(const IndexType &)

?

PERF: Combine conditions in ImageRegion::IsInside(index)

Will do.

All checks passed with the first commit.  I just force pushed to change the commit message as requested.


Documentation is badly out of date

I'd like to use this nuget package, but I can't figure out how to get anything into ElasticSearch using it.  For example, the documentation only shows one parameter going into the Index function, however, there is no overload of Index that takes only one parameter.

@mgrigajtis Which version of NEST are you using?
There is documentation for NEST 1.x but it is out of date in places. If you come across issues, please feel free to raise; PRs are also most welcome :smile:
The Index() method in NEST 1.x has the following overloads
public partial class ElasticClient : IElasticClient
{
	public IIndexResponse Index<T>(T @object, Func<IndexDescriptor<T>, IndexDescriptor<T>> indexSelector = null)
		where T : class
	{
		// ...
	}

	public IIndexResponse Index<T>(IIndexRequest<T> indexRequest)
		where T : class
	{
		// ...
	}

	public Task<IIndexResponse> IndexAsync<T>(T @object, Func<IndexDescriptor<T>, IndexDescriptor<T>> indexSelector = null)
		where T : class
	{
		// ...
	}

	public Task<IIndexResponse> IndexAsync<T>(IIndexRequest<T> indexRequest)
		where T : class
	{
		// ...
	}
}

the method can take the object T to index and an optional delegate to additional describe the index operation, or take an index request object. There are also async versions of both methods. You can find examples of doing bulk indexing on stackoverflow and on blog posts; if you're indexing many documents, you're very likely to want to use the bulk api to do this.
We are working on documentation for NEST 2.x which is generated from literal tests to assert that it aligns with any changes that are made to source.

Strange, it's the default package that Nuget installs into a DotNet project, version 1.7.1.  Unless I'm missing something really obvious, the package seems broken since it can't write to ElasticSearch.

@mgrigajtis if you could post an example of what you're trying to do, or what error message you receive, I'll gladly try to help.

Sure thing, here' the code snipet in my application:
private static void WriteInfoToElasticSearch(string currentDateTime, string logWriterName, string message)
        {
            var node = new Uri("http://<IP_ADDRESS>:9200");
            var config = new ConnectionConfiguration(node);
            var client = new ElasticsearchClient(config);

            var lo = new LogObject();
            lo.logWriter = logWriterName;
            lo.message = message;
            lo.timestamp = currentDateTime.ToString();

            try
            {
                var response = client.Index(logWriterName, "SentMessage", new JavaScriptSerializer().Serialize(lo), null);
            }
            catch (Exception ex)
            {
                WriteErrorToTextFile(currentDateTime, logWriterName, " problem sending to Elastic Search ", logWriterName + "Error.log", ex);
            }
        }

The LogObject that I am instantiating only has the three properties that I am initializing above.  Here is the error that I get from this result.
1/19/2016 9:31:47 AM MessageReaderWriter ERROR  problem sending to Elastic Search  System.NullReferenceException: Object reference not set to an instance of an object.
   at Elasticsearch.Net.Serialization.PocoJsonSerializerStrategy.DeserializeObject(Object value, Type type)
   at Elasticsearch.Net.Serialization.PocoJsonSerializerStrategy.DeserializeObject(Object value, Type type)
   at Elasticsearch.Net.Serialization.SimpleJson.DeserializeObject(String json, Type type, IJsonSerializerStrategy jsonSerializerStrategy)
   at Elasticsearch.Net.Serialization.SimpleJson.DeserializeObject[T](String json)
   at Elasticsearch.Net.Serialization.ElasticsearchDefaultSerializer.Deserialize[T](Stream stream)
   at Elasticsearch.Net.Connection.Transport.ThrowOrGetErrorFromStreamResponse[T](TransportRequestState`1 requestState, ElasticsearchResponse`1 streamResponse)
   at Elasticsearch.Net.Connection.Transport.DoRequest[T](TransportRequestState`1 requestState)
   at Elasticsearch.Net.Connection.Transport.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters)
   at Elasticsearch.Net.ElasticsearchClient.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters)
   at Elasticsearch.Net.ElasticsearchClient.Index(String index, String type, Object body, Func`2 requestParameters)
   at UNITE.LogWriter.WriteInfoToElasticSearch(String currentDateTime, String logWriterName, String message)

No further information is available.

ElasticsearchClient is the low level client.
If you have no special reason to do so, I suggest you use ElasticClient class instead.
Then you could just client.Index(lo); :smile:

I do have a reason for using the low level client.  There are going to be many different message writers and we want them separately indexed.

Actually, the high level might be adequate.  I'll see if that fits.

Seperate indices can be easily accomplished like so:
client.Index(lo, d => d.Index(logWriterName));
If I do not understand you correctly and still you wish to use the low level client, can you try remove the call to new JavaScriptSerializer().Serialize()?

I have tried the low level client without the JavaScript serializer, same error.
Well, I tried the high level client.  Also broken.
private static void WriteInfoToElasticSearch(string currentDateTime, string logWriterName, string message)
        {
            var node = new Uri("http://<IP_ADDRESS>:9200");
            //var config = new ConnectionConfiguration(node);
            //var client = new ElasticsearchClient(config);
            var settings = new ConnectionSettings(node, defaultIndex: logWriterName);
            var client = new ElasticClient(settings);

            var lo = new LogObject();
            lo.logWriter = logWriterName;
            lo.message = message;
            lo.timestamp = currentDateTime;

            try
            {
                // var response = client.Index(logWriterName, "SentMessage", new JavaScriptSerializer().Serialize(lo), null);
                var response = client.Index(lo);
            }
            catch (Exception ex)
            {
                WriteErrorToTextFile(currentDateTime, logWriterName, " problem sending to Elastic Search ", logWriterName + "Error.log", ex);
            }
        }

And the error message:
1/19/2016 9:57:03 AM MessageReaderWriter ERROR  problem sending to Elastic Search  Newtonsoft.Json.JsonReaderException: Error reading string. Unexpected token: StartObject. Path 'error', line 1, position 10.
   at Newtonsoft.Json.JsonReader.ReadAsStringInternal()
   at Newtonsoft.Json.JsonTextReader.ReadAsString()
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Nest.NestSerializer.DeserializeUsingSettings[T](Stream stream, JsonSerializerSettings settings)
   at Nest.NestSerializer.Deserialize[T](Stream stream)
   at Elasticsearch.Net.Connection.Transport.ThrowOrGetErrorFromStreamResponse[T](TransportRequestState`1 requestState, ElasticsearchResponse`1 streamResponse)
   at Elasticsearch.Net.Connection.Transport.DoRequest[T](TransportRequestState`1 requestState)
   at Elasticsearch.Net.Connection.Transport.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters)
   at Elasticsearch.Net.ElasticsearchClient.DoRequest[T](String method, String path, Object data, IRequestParameters requestParameters)
   at Elasticsearch.Net.ElasticsearchClient.Index[T](String index, String type, Object body, Func`2 requestParameters)
   at Nest.RawDispatch.IndexDispatch[T](ElasticsearchPathInfo`1 pathInfo, Object body)
   at Nest.ElasticClient.<>c__DisplayClass459_0`1.<Index>b__1(ElasticsearchPathInfo`1 p, IndexDescriptor`1 d)
   at Nest.ElasticClient.Nest.IHighLevelToLowLevelDispatcher.Dispatch[D,Q,R](D descriptor, Func`3 dispatch)
   at Nest.ElasticClient.Index[T](T object, Func`2 indexSelector)
   at UNITE.LogWriter.WriteInfoToElasticSearch(String currentDateTime, String logWriterName, String message)

Note that our installation of Elastic Search does work and indexes properly from other applications.

Are you using NEST 1.x with Elasticsearch 2.x ?

Here's the version of ElasticSearch (remote host)
{
  "name" : "Mikula Golubev",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "2.1.1",
    "build_hash" : "40e2c53a6b6c2972b3d13846e450e66f4375bd71",
    "build_timestamp" : "2015-12-15T13:05:55Z",
    "build_snapshot" : false,
    "lucene_version" : "5.3.1"
  },
  "tagline" : "You Know, for Search"
}

The Nuget packages ones used were the ones that Visual Studio 2015 recognized as stable.
ElasticSearch.Net 1.7.1
Nest 1.7.1

Seems like ES 2.1 is returning an error that the 1.7.1 version cannot understand.. can you try manually sending the same index request (by using head plugin/curl/postman) and see what response you get?

@jonyadamit  That's correct.  Error responses have changed drastically in ES 2.x and are more structured now.  This is one of the many reasons NEST 1.x is not compatible with ES 2.x.
@mgrigajtis our ES 2.x compatible client (NEST 2.0.0-alpha1) is now in pre-release mode.  If you're installing via the package manager UI make sure you check Include pre-releases.  If you're using the console, then use the Pre flag.

Version 2 alpha nuget packages do not work either.  I've tried them.
Using postman everything works as expected.

Allow me to be a bit more specific.  I have cleaned out all of the packages, and installed the 2.0.0 alpha1 version.  It no longer throws an error, but the error is encapsulated in the response object.  Here's the error:
{StatusCode: 400,
	Method: PUT,
	Url: http://<IP_ADDRESS>:9200/Test/logobject,
	Request: {"timestamp":"1/19/2016 11:38:39 AM","message":"System.Exception: Exception of type 'System.Exception' was thrown.","logWriter":"Test"},
	Response: <Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>
	ExceptionMessage: The remote server returned an error: (400) Bad Request.
	 StackTrace:    at System.Net.HttpWebRequest.GetResponse()
   at Elasticsearch.Net.HttpConnection.Request[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Connection\HttpConnection.cs:line 138}

The strange thing here is that I did trigger the DisabledDirectStreaming() method before calling this object.

Ok, I got it to work, using the low level library.  Here's how:
private static void WriteInfoToElasticSearch(string currentDateTime, string logWriterName, string message)
        {
            var node = new Uri("http://<IP_ADDRESS>:9200");
            var config = new ConnectionConfiguration(node);
            var client = new ElasticsearchClient(config);

            var lo = new LogObject();
            lo.logWriter = logWriterName;
            lo.message = message;
            lo.timestamp = currentDateTime.ToString();

            try
            {
                var response = client.Index<object>(logWriterName.ToLower(), "sent_message", lo);
            }
            catch (Exception ex)
            {
                WriteErrorToTextFile(currentDateTime, logWriterName, " problem sending to Elastic Search ", logWriterName + "Error.log", ex);
            }

It's interesting that I had to force the index name to lower string.  Elastic search doesn't like capitals as an index name for some reason, and can't handle it.  I'm not sure if type follows the same rules, but I applied the rule to it anyway.  Also, I had to specify the return type from the method.  Seemed awkward, but it does the trick.

Good to hear the uppercase in index name explains the 400.
Just as an FYI:
In the lowlevel client we have no mapped responses so a call to
Index() returns a dynamic object (deserialized using an embedded SimpleJson.
Index<T>() behaves differently depending on T
T is Stream returns you direct access to the response stream
T is string returns response as string
T is byte[] returns response as byte[]
T is VoidResponse body is ignored.
any other T we attempt deserialize the entire body to T e.g object in your case.

Actually, the upper case doesn't explain the 400, because I tried that on the high level DLL before switching back to the low level.  That one is still a mystery to me.


Made the parrot scrollable in 4957b0b


H2 DB is blocking undeploy of REST war application

There is a problem during undeploy or redeploy REST Web Services war due to incorrect behaviour of H2 JDBC driver:
09-Aug-2015 23:37:43.275 WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [jg-rest] registered the JDBC driver [org.h2.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.
09-Aug-2015 23:37:43.278 WARNING [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [jg-rest] appears to have started a thread named [MVStore background writer nio:C:/jgrades/internal/licensing.db.mv.db] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 org.h2.mvstore.MVStore$BackgroundWriterThread.run(MVStore.java:2578)

In some cases undeploying is impossible and tomcat needs to be shutdown.

It's seems like open transaction with DB.
Are you sure,you closing correctly all connections with DB?

the problem occured only in application builded with dev profile. It is connected with hibernate.hbm2ddl.auto which is set to create-drop, which mean "on teardown application drop entire database". But unfortunatelly, hibernate is trying to drop DB after the connection is closed and JDBC driver unloaded. I will try to affect on order of above actions

It turns out that problem is associated with cargo plugin (for un/re/deployment). Cargo is just putting/removing application from tomcat's directory webapp, which cause unexpected unregistering all contexts and jdbc driver. Then, lock for db file is not removed, so next deployment of application failed.
Workaround is to using cargo maven plugin only for deployment application to container which hasn't allready running jg-rest application. For reload and undeployment use features available though Tomcat Web Application Manager.


Adapt institutional partners

This PR adds the Donders Institute as an institutional partner and moves Aarhus University to former institutional partners.
It also replaces the link to my Github with a link to my homepage for my name listing - while we're already at it 😄

Grrrrr ... I just saw I accidentally swapped in the wrong logo (not compressed) - will fix!

thx @britta-wstnr!


Created MirroredRightAngledTriangle_Pattern.c

Code for a mirrored right angled triangle pattern in C

@deveshvaidyaofficial hey! Please accept and add me as an assignee with the hacktober tag!

@Asmi1108 We are currently not accepting any pull or merge request until the problems CONTRIBUTORS.md are fixed


Question: There is a way to access AutoIncrementCounter?

Hello there, sorry to bother you with this, but I can't figure this out, do you know if there is a way to access this model via console, like: AutoIncrementCounter.all?
I need to update all the counters to a new ID, but I can't find a way to do it using db migrations.
I really appreciate any help you can provide.

The counters are stored in a collection of their own. In theory you should be able to access this directly. Since this is not its original intended use, there's no interface exposed to reach directly into this collection. I'm curious if you are able to make it work, and would love to see how you ended up doing it 🙏
https://github.com/suweller/mongoid-autoinc/blob/30cfe694da15ddfa2709249fdfdd5d22b93e63c1/lib/autoinc/incrementor.rb#L37


Visualisation improvements

Opening this as a place to keep track of potential improvements we could make to the webserver UI.

[ ] #119
[x] Use custom image to show children rather than circle
[ ] #122
[ ] #121
[ ] #120

Closing this issue as we've now created individual issues


Update argonaut to 6.3.0

Updates io.argonaut:argonaut from 6.2.5 to 6.3.0.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "io.argonaut", artifactId = "argonaut" } ]

labels: library-update, semver-minor

There aren't any release notes, and I don't care enough about this to consider a backport. If someone does and can prove it's safe, PR to series/0.21 welcome.


identd leaks my Matrix username

As the title suggests, identd returns the first 8 characters of my MXID (?) instead of using my per-network username.

If you are an admin you can set per-network username and it takes precedence. The idea of the identd feature is to provide unique idents for users so I-lines can be requested.
It creates a hash of your MXID so it doesn't directly leak individual characters from it.

Changed from an issue to an action.

default to mxid hash to prevent mxid conflicts and leaks
ident configuration for admins (IDENTCFG in control room as admin command or something)
allow setting global ident for any mxid


Resurrect the 'rules' tool.

This tool is useful for writing shell completion script for tools
expecting a rule name as argument.
The tool was dropped by 34b46f28c.
Fix #1024.

Very useful IMHO. Do you want to look at the merge conflict or should I?

Done fixing merge conflict.

Thanks!


Best way to exit a script if you get into trouble?

If my battery goes low, or if a failsafe occurs, then it is likely the vehicle will RTL. In this case my script may well still be running. What is the best method to call to exit it/how can I exit it to MAVProxy without killing mavproxy?

while not api.exit and vehicle.mode.name != 'RTL:
      <your code here>

Your script ends when there is nothing else to execute. Just put everything in a while loop and provide a exit condition.
To kill the script from mavproxy run api stop <thread #>

Or for an immediate less clean method you could do this:
import sys

<your code before>

if vehicle.mode.name == 'RTL':
     sys.exit()

<your code that wont run after the script is killed>

@djnugent Thank you very much! The real example I'm looking at is that if my code is running and we go low battery there is an automatic RTL. However my goto code will actually reset the mode to guided and there can be some fighting over control in this case.
The first example isn't really all that useful because the loop is only checked when you enter the block. If you're doing lots of things in the loop then it simply isn't responsive enough. Of course you can use this around every operation, but then you end up having these loops all over the place. Yuk.
The second looks more useful. I can add a vehicle mode callback and shut the script down from that. I'll try it :-)
As an aside ... we probably need a document on "good coding practices for drone scripts". If we were to write something like that, any other things you would mention? First thing that springs to mind is basic safety - don't do horizontal movement if your vehicle is at person height.

Yeah it really depends on how your script is structured.
+1 on the good coding practices.
Explain why while not api.exit: is important.
Explain how to check for command completion for various commands. I love "simple goto" with the arm_takeoff function. That is the proper way to use dronekit and the docs don't explain that right now.

That is the proper way to use dronekit and the docs don't explain that right now.

Working on it :-)  Coding practices would be a good place for this information.
IMO while not api.exit: is another case where you'd probably be better off having a callback ... if it were observable ... because the API can in theory exit at any time. Do you think we can make it observable?

@hamishwillee I'm sure we could make it observable. I'm not sure how "observe" works(a separate thread??) but it would be nice if the user didn't have to worry about it.

@djnugent This important enough to have its own topic and expand the interest - see #160. I don't know how observer works in this system, but certainly should be possible to provide some callback that people can register for and handle various failures how they like. We probably should create a separate issue. I haven't though.

@djnugent Just tried api stop 1. As far as I can tell, this just sets the api.exit so it is up to your code to "do something" to exit. As before that's not really very useful unless most of your action is in a short event loop of some kind that gets checked regularly - we will need an observer of some kind for this to work in normal code.
I also tried sys exit. This does indeed stop the thread executing, but it doesn't clean it up. As you can see below the thread remains in the list after exiting:
GUIDED> API Threads:
0: C:\Users\hamis_000\Documents\vagranttesting\dronekit-python\examples\guided_set_speed_yaw\guided_set_speed_yaw.py
Is there a way in code to completely exit the current thread of execution and clean up?

Yep they have their trade offs. I briefly looked into killing the thread and it is over my head. It appears the way api.exit is implemented is the standard way to kill a thread. I think if we want more control over threads/processes, mavproxy needs to implement multiprocessing instead on threading. This may be a question for @tridge

@djnugent I think the use of api.exit to notify that the thread should kill itself is fine, as is the use of sys.exit() for the thread to do the suicide :-) What we need to make this work is:

Making the api.exit observable so that the app can kill itself at any time (rather than forcing effective code to write a tight event loop)
Update the api.list() function so that it detects that the killed thread really is dead. If it isn't dead we need to look at why sys.exit() isn't killing it.

Daniel, feel free to join mumble to discuss

Just a few notes from Tridge:

there is a way, but not a neat one. self.mpstate.functions.process_stdin("module unload MYMODULENAME", immediate=True)
We should add a better API. This function needs to be exposed to modules: https://github.com/Dronecode/MAVProxy/blob/master/MAVProxy/mavproxy.py#L279

@djnugent - see http://dev.ardupilot.com/wiki/ardupilot-mumble-server/ for information on Mumble setup.

@hamishwillee I talked with tridge and attempted to implement a solution. We came up with a solution for the script to terminate itself with a clean exit.  The script is the only thing that can terminate itself. That is why api.exit is in place. Mavproxy can't force the script to exit, but it can flag it to exit and have the script terminate itself.
The reason a parent thread terminating child threads is not supported is because the parent thread is not aware of the child's activities. The child could be accessing a file or has an open connection to something. Terminating the child would cause an inconsistent state.
So...
Have the script terminate itself cleanly: Done
Mavproxy forcing the script to terminate immediately: Impossible(or extremely hard and dangerous)

There's a case where event listeners on attributes would still get fired when we exit the thread, I think this is a bug and we should squash it before labeling this as "Done", but I agree this is the only clean way of going about it.

@djnugent  Thank you! So how do I test this (where do I get the latest version, and how do I call this new form of exit?)
Agree with @mrpollo previous comment that we need to make sure that exiting the script does clean up attribute observers etc.
Having a clean way for the thread to call exit is still only part of the solution. We also need to be able to observe the api.exit so that we don't need to write code that polls it (everywhere).
Even so, essential step in the right direction.

@hamishwillee I've made the changes on my local fork but something else took my attention before I could commit. Tomorrow.
@mrpollo how does the multiprocessing library sound instead of threading? That way we can terminate it if we please.
An ideal situation would youd be able to throw an exception from the parent thread to the child and then have a 'final' block in the child thread to clean  up before exiting.

@djnugent multiprocessing in mavproxy sounds like a nice addition you might want to talk to @tcr3dr who recently did some threading work on MAVProxy to fix some of the GUI components for OSX

Hi @tcr3dr (and @djnugent), can you please review this issue and also #166 - they appear to have got stuck!
Tim, the story is that #166 will allow a thread to cleanly kill itself - we definitely need that and it needs to be merged.
The remaining problem here is that actually using the API is likely to be "messy" because you would have to litter the code with checks on api.exit. It would be better if api.exit was observable so you could kill the thread in a single callback. [Note that other cases you are likely to want to be able to kill the app are observable - e.g. if you detect RTL]

Due to progress on #188 I am more inclined to close this than to have it merged in for a short time. We might be looking at only a few weeks of utility, without a useful story for backwards compatibility.
@djnugent @hamishwillee what are your thoughts?

@tcr3dr This issue is a docs question that needs to be answered, not code that needs to be merged. It needs to be kept open and then answered when #188 delivers (or to put it another way, the requirement of this issue to be able to answer the question "what is the best way to exit a script if you get into trouble?" is something that #188 needs to answer in a sensible way.
I agree that #188 looks like a more complete solution to the problem than #166 and #167, so if @djnugent agrees, more than happy close those while we wait on the more complete solution.

Closing this - not relevant in DKPY2

(See #348)


Ensuring users can truly pass options to transform.

Hello again,
I hope PR's are welcome; I was experimenting with JSPot a bit more after you very kindly updated the code base to handle ES2015 source files. During this experimenting I hit a problem where I needed to set more options for falafel / acorn that your current option (ecmaVersion), however, no other setting I applied seemed to be getting used.
I did some digging for an hour or so through your code base and realised that transform can sometimes be called without the options argument meaning at times it'll be called and ignore any settings you've supplied. transform seems to get called once without options right from launch and it seems to be yoink_members which does the calling.
You'll know the code base better than I do and the implications of my proposed changes, but in this PR I'm merely updating yoink_members method so it respects options that had been passed through to it. I'm also updating the gather method which was also passing options through to transform but wasn't extending any set by the user.
Have a look and see what you think!
Anthony

Hi, thanks for the PR :) +1 on passing through parser options, this is probably something I should've added in #38.
I'd be a bit more comfortable with us scoping the options we pass to falafel to avoid name conflicts, maybe something like {parser: {/* falafel options go here */}}?

Two other things I think we might need for this:

If you would like to use this feature via the cli, we'll need to add a way of passing through parser options via the cli. If you don't need the cli, then I think we can leave this for now.
It would be great if we could add a test for supporting passing through parser options. Maybe there is some falafel or acorn option we could pass through in a test that would make testing this easy enough?

Hey!
Personally I don't need it via the CLI, I'm doing everything via a little CommonJS / Gulp Task I've written. As for the isolation of the falafel options into an object I think that'd be a great idea. I can certainly update the test suite with something to ensure that falafel options are accepted and indeed extended.
I'll try to get something written over the next couple of days!

Have a look at what I've just committed. I've moved the Acorn / Falafel options (ecmaVersion, locations) into an object to encapsulate them, I've given the ability for the user to overwrite said object and I've also updated the test suite to ensure this.
Hopefully this all aligns with what you were imagining!

Looks great :+1:, will merge and do a release in a bit.

Released as v0.3.10

Excellent! Thanks so much for all the support.


Testing issue with arquillian in openliberty

Hi there,
I am new to openliberty and have not used arquillian before. We have a legacy code base that has no tests and I am attempting a POC on one of the webservices. I've read through the arquillian guide on openliberty's site. I've run the project and it works fine. I cnnot see anything fundamentally different.

[INFO] Compiling 1 source file to C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\test-classes
[INFO]
[INFO] --- maven-surefire-plugin:3.0.0-M5:test (default-test) @ WebOfferManagement ---
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.5:report (post-unit-test) @ WebOfferManagement ---
[INFO] Skipping JaCoCo execution due to missing execution data file.
[INFO]
[INFO] --- liberty-maven-plugin:3.5:create (default) @ WebOfferManagement ---
[INFO] CWWKM2102I: Using artifact based assembly archive : io.openliberty:openliberty-kernel:null:<IP_ADDRESS>:zip.
[INFO] CWWKM2102I: Using installDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp.
[INFO] CWWKM2102I: Using serverName : defaultServer.
[INFO] CWWKM2102I: Using serverDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer.
[INFO] Installing assembly...
[INFO] Expanding: C:\Users\cc327150\.m2\repository\io\openliberty\openliberty-kernel\<IP_ADDRESS>\openliberty-kernel-<IP_ADDRESS>.zip into C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty
[INFO] CWWKM2143I: Server defaultServer does not exist. Now creating...
[INFO] CWWKM2001I: Invoke command is ["C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\bin\server.bat", create, defaultServer].
[INFO] Server defaultServer created.
[INFO] CWWKM2129I: Server defaultServer has been created at C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer.
[INFO] Copying 1 file to C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer
[INFO] CWWKM2144I: Update server configuration file server.xml from C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\src\main\liberty\config\server.xml.
[INFO]
[INFO] --- liberty-maven-plugin:3.5:install-feature (default) @ WebOfferManagement ---
[INFO] CWWKM2102I: Using artifact based assembly archive : io.openliberty:openliberty-kernel:null:<IP_ADDRESS>:zip.
[INFO] CWWKM2102I: Using installDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp.
[INFO] CWWKM2102I: Using serverName : defaultServer.
[INFO] CWWKM2102I: Using serverDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer.
[INFO] Additional user feature json coordinate: com.sun.xml.ws:features:2.3.2
[INFO] Additional user feature json coordinate: org.jboss.shrinkwrap:features:1.2.6
[INFO] Additional user feature json coordinate: org.jboss.shrinkwrap:features:1.2.6
[INFO] Additional user feature json coordinate: org.jboss.shrinkwrap.resolver:features:3.1.4
[INFO] Additional user feature json coordinate: org.jboss.shrinkwrap.resolver:features:3.1.4
[INFO] Additional user feature json coordinate: org.jboss.shrinkwrap.descriptors:features:2.0.0
[WARNING] Unable to find the following additional features JSON in the connected repositories: com.sun.xml.ws:features:2.3.2
[WARNING] Unable to find the following additional features JSON in the connected repositories: org.jboss.shrinkwrap:features:1.2.6
[WARNING] Unable to find the following additional features JSON in the connected repositories: org.jboss.shrinkwrap:features:1.2.6
[WARNING] Unable to find the following additional features JSON in the connected repositories: org.jboss.shrinkwrap.resolver:features:3.1.4
[WARNING] Unable to find the following additional features JSON in the connected repositories: org.jboss.shrinkwrap.resolver:features:3.1.4
[WARNING] Unable to find the following additional features JSON in the connected repositories: org.jboss.shrinkwrap.descriptors:features:2.0.0
[INFO] Parsing the server file C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\server.xml for features and includes.
[INFO] Parsing the server file C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\configDropins\overrides\liberty-plugin-variable-config.xml for features and includes.
[INFO] Installing features: [jsp-2.3, servlet-4.0, ejb-3.2, localconnector-1.0, jsonp-1.1, jaxrs-2.1]

[INFO] Product validation completed successfully.
[INFO] The following features have been installed: jndi-1.0 el-3.0 ejbRemote-3.2 jaxrs-2.1 jsp-2.3 servlet-4.0 jdbc-4.1 jaxrsClient-2.1 ejbHome-3.2 jsonp-1.1 ejb-3.2 jca-1.7 ejbPersistentTimer-3.2 ejbLite-3.2 mdb-3.2 localConnector-1.0
[INFO]
[INFO] --- liberty-maven-plugin:3.5:configure-arquillian (default) @ WebOfferManagement ---
[INFO] CWWKM2102I: Using artifact based assembly archive : io.openliberty:openliberty-kernel:null:<IP_ADDRESS>:zip.
[INFO] CWWKM2102I: Using installDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp.
[INFO] CWWKM2102I: Using serverName : defaultServer.
[INFO] CWWKM2102I: Using serverDirectory : C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer.
[INFO] Automatically detected the Arquillian Liberty Managed container at the following coordinates: io.openliberty.arquillian:arquillian-liberty-managed.
[INFO]
[INFO] --- maven-failsafe-plugin:3.0.0-M5:integration-test (default) @ WebOfferManagement ---
[INFO]
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running za.co.nb.offermanagement.apis.resources.RecalculateOfferIT
Picked up JAVA_TOOL_OPTIONS: -Dcom.ibm.ws.logging.console.log.level=INFO -Dsystem.context.root=/WebOfferManagement
Launching defaultServer (Open Liberty <IP_ADDRESS>/wlp-1.0.58.cl211120211019-1900) on OpenJDK 64-Bit Server VM, version 1.8.0_312-b07 (en_ZA)
[AUDIT   ] CWWKE0001I: The server defaultServer has been launched.
[AUDIT   ] CWWKG0093A: Processing configuration drop-ins resource: C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\configDropins\overrides\liberty-plugin-variable-config.xml
[INFO    ] CWWKE0002I: The kernel started after 3.098 seconds
[INFO    ] CWWKF0007I: Feature update started.
[INFO    ] Aries Blueprint packages not available. So namespaces will not be registered
[AUDIT   ] CWWKZ0058I: Monitoring dropins for applications.
[AUDIT   ] CWWKI0001I: The CORBA name server is now available at corbaloc:iiop:localhost:2809/NameService.
[INFO    ] CWWKO0219I: TCP Channel defaultHttpEndpoint has been started and is now listening for requests on host *  (IPv6) port 9080.
[AUDIT   ] CWWKF0012I: The server installed the following features: [ejb-3.2, ejbHome-3.2, ejbLite-3.2, ejbPersistentTimer-3.2, ejbRemote-3.2, el-3.0, jaxrs-2.1, jaxrsClient-2.1, jca-1.7, jdbc-4.1, jndi-1.0, jsonp-1.1, jsp-2.3, localConnector-1.0, mdb-3.2, servlet-4.0].
[INFO    ] CWWKF0008I: Feature update completed in 9.490 seconds.
[AUDIT   ] CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 12.592 seconds.
[INFO    ] CWWKZ0018I: Starting application 4d383838-51a8-42b1-b198-b8dd434db9e6.
[INFO    ] CWWKZ0136I: The 4d383838-51a8-42b1-b198-b8dd434db9e6 application is using the archive file at the C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\dropins\4d383838-51a8-42b1-b198-b8dd434db9e6.war location.
[INFO    ] SESN8501I: The session manager did not find a persistent storage location; HttpSession objects will be stored in the local application server's memory.
[INFO    ] SRVE0169I: Loading Web Module: 4d383838-51a8-42b1-b198-b8dd434db9e6.
[INFO    ] SRVE0250I: Web Module 4d383838-51a8-42b1-b198-b8dd434db9e6 has been bound to default_host.
[AUDIT   ] CWWKT0016I: Web application available (default_host): http://v105p10pra4704.africa.nedcor.net:9080/4d383838-51a8-42b1-b198-b8dd434db9e6/
[INFO    ] SRVE9103I: A configuration file for a web server plugin was automatically generated for this server at C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\logs\state\plugin-cfg.xml.
[INFO    ] SESN0176I: A new session context will be created for application key default_host/4d383838-51a8-42b1-b198-b8dd434db9e6
[INFO    ] SESN0172I: The session manager is using the Java default SecureRandom implementation for session ID generation.
[AUDIT   ] CWWKZ0001I: Application 4d383838-51a8-42b1-b198-b8dd434db9e6 started in 3.841 seconds.
[INFO    ] SRVE0242I: [4d383838-51a8-42b1-b198-b8dd434db9e6] [/4d383838-51a8-42b1-b198-b8dd434db9e6] [ArquillianServletRunner]: Initialization successful.
[AUDIT   ] CWWKT0017I: Web application removed (default_host): http://v105p10pra4704.africa.nedcor.net:9080/4d383838-51a8-42b1-b198-b8dd434db9e6/
[INFO    ] SRVE0253I: [4d383838-51a8-42b1-b198-b8dd434db9e6] [/4d383838-51a8-42b1-b198-b8dd434db9e6] [ArquillianServletRunner]: Destroy successful.
[AUDIT   ] CWWKZ0009I: The application 4d383838-51a8-42b1-b198-b8dd434db9e6 has stopped successfully.
[ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 24.802 s <<< FAILURE! - in za.co.nb.offermanagement.apis.resources.RecalculateOfferIT
[ERROR] za.co.nb.offermanagement.apis.resources.RecalculateOfferIT.givenValidCaseId_whenSubmitted_thenRetrieveRules  Time elapsed: 0 s  <<< ERROR!
java.lang.NullPointerException
        at za.co.nb.offermanagement.apis.resources.RecalculateOfferIT.givenValidCaseId_whenSubmitted_thenRetrieveRules(RecalculateOfferIT.java:37)

[INFO    ] SRVE9103I: A configuration file for a web server plugin was automatically generated for this server at C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement\target\liberty\wlp\usr\servers\defaultServer\logs\state\plugin-cfg.xml.
Stopping server defaultServer.
[AUDIT   ] CWWKE0055I: Server shutdown requested on Tuesday 23 November 2021 at 8:13 AM. The server defaultServer is shutting down.
[AUDIT   ] CWWKE1100I: Waiting for up to 30 seconds for the server to quiesce.
[INFO    ] CWWKO0220I: TCP Channel defaultHttpEndpoint has stopped listening for requests on host *  (IPv6) port 9080.
[INFO    ] CWWKE1101I: Server quiesce complete.
[AUDIT   ] CWWKI0002I: The CORBA name server is no longer available at corbaloc:iiop:localhost:2809/NameService.
[AUDIT   ] CWWKE0036I: The server defaultServer stopped after 25.916 seconds.
Server defaultServer stopped.
[INFO]
[INFO] Results:
[INFO]
[ERROR] Errors:
[ERROR]   RecalculateOfferIT.givenValidCaseId_whenSubmitted_thenRetrieveRules:37 NullPointer
[INFO]
[ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:09 min
[INFO] Finished at: 2021-11-23T08:13:06+02:00
[INFO] ------------------------------------------------------------------------

C:\Users\cc327150\dev\projects\nb\bpmexjee-offermanagement\WebOfferManagement (UID9624-12002-arquillian-testing-POC)

It does not seem to find my: WebOfferManagement.war but gives this random: 4d383838-51a8-42b1-b198-b8dd434db9e6 that it deploys, but in the dropins directory there is nothing.
I've also seen: Cannot deploy duplicate application but also receive a NullPointerException as nothing is being autowired in.
Any help appreciated.
Maven 3.8.4
Java 8 Updated 312
Windows 10
JavaEE 7

@PhilipL-nedbank What is it that you are trying to test with Arquillian? If you could provide more information on how your tests are structured that would be helpful.

It does not seem to find my: WebOfferManagement.war but gives this random: 4d383838-51a8-42b1-b198-b8dd434db9e6 that it deploys, but in the dropins directory there is nothing.

Did you specify your war name in your @Deployment? That may be why you are seeing an auto-generated name. For example if you specified:
ShrinkWrap.create(WebArchive.class)
instead of
ShrinkWrap.create(WebArchive.class, WARNAME)

@PhilipL-nedbank Do you still need assistance with this issue?

Kinda given up at this point. There are other problems in the arch. that will make testing excessively difficult.


Order Issue for USART flushing

I believe the uart flush has the operation in the wrong order. please correct me if i'm wrong.
                fn flush(&mut self) -> nb::Result<(), Self::Error> {
                    // NOTE(unsafe) atomic read with no side effects
                    let isr = unsafe { (*$USARTX::ptr()).isr.read() };

                    // Frame complete, set the TC Clear Flag
                    unsafe {
                        (*$USARTX::ptr()).icr.write(|w| {w.tccf().set_bit()});
                    }

                    // Check TC bit on ISR
                    if isr.tc().bit_is_set() {
                        Ok(())
                    } else {
                        Err(nb::Error::WouldBlock)
                    }
                }

i believe the write to tccf should be done after checking for TC bit. the way it is done now means that we clear the TC flag before checking it, meaning that the condition will always return WouldBlock.
I'm happy to do a PR if i'm correct.

isr.tc().bit_is_set()

As far as I know this does not perform the status register read, but reads the isr variable that was obtained on the first line.

you can have a race condition if the TC flag is set between the read and the clear flag. that way, you will clear the flag, but the tc flag won't be detected. i think the correct implementation should be test flag, and clear flag only if the flag is set.

Got it, I must agree

Fixed in #188.


Slow map performance

When viewing or editing lots of map data with iD, it can take awhile for the map to render and respond to viewport changes, sometimes many seconds. This happens even on high-power hardware and can quickly degrade usability. The problem is long-standing, but has gotten progressively more apparent as people add more and more things to the map.
I'm opening this broad issue with the deceptively simple intent to "make the map not slow." How exactly we get there will take further analysis and probably a combination of changes, likely some large ones. Issues like #3741, #7710, and #7951 might be relevant, but I'm open to all kinds of ideas.

On my fast desktop computer with Windows 10 and Chrome, the map editor runs fine for a while but as I continue editing, it bogs down a lot once I'm above ~100 edits and gets unusably slow in the 200–300 range, taking several seconds to respond to most input like dragging points around. My assumption is this scales proportionally to the number of edits, but maybe it's actually bogging down based on a side effect of making these edits like time spent in the map or locations loaded into memory.

A part of the long lines issue has been fixed in #7656 (validation), but I'm afraid a different part has been lost in communication.
In #7656, @ian727 complained about iD performance in processing multipolygon changes after a large number of changes, and I can confirm that. It does not sound as if having anything with crossing validation.
Keavon is probably up to something, and in my experience the slowdown has to do with the number of nodes added and/or moved. Saving the changeset, exiting iD and re-entering usually fixes the issue for a while (if you only save the changeset without exiting, things will soon get slow again).
From the recent past, I recall that editing this changeset was particularly sluggish near the end, and I was reluctant to save it half-completed, but it was almost unworkable. As you can see, very long lines were involved, with lot of nodes added, moved or removed. In this case, those were mostly multipolygon boundaries, but long rivers can be just as bad.
On the bright side, the issue forces users to create smaller and better-localized changesets :).

+1 to this. I just went to make a few edits after a few months of not using iD and it's very noticeably slower. Honestly, it has become borderline unusable, and I'm using fast hardware and editing relatively simple (rural) areas.
There's now sometimes several seconds of lag when doing simple things like moving points in a line and double clicking to insert points sometimes requires multiple attempts before it does anything.

Nowadays, I have all online validations turned off, and the editor is much more responsive. All validations are automatically executed before commit anyway, so I have a proper chance to review and fix them. I'm not a fan of validate-while-editing approach anyway -- all flavors of it tend to interfere with editing process, as we can see here. At minimum, I would recommend that validations are turned off by default (at least those which are worst performance offenders, presumably way-crossing ones).


JedisClusterConnectionHandler.initializeSlotsCache can result in two entries for a single redis instance

Expected behavior
It seems like JedisCluster should always have exactly one Jedis instance per redis server. It should compute its lists of nodes from cluster slots (or cluster nodes -- I forget which one is recommended now), and it shouldn't add the start nodes, since they should already be in the list anyway.
(i.e., I think the behavior would be correct if these lines were removed from JedisClusterConnectionHandler line ~50:
    for (HostAndPort node : startNodes) {
      cache.setNodeIfNotExist(node);
    }

Actual behavior
JedisClusterConnectionHandler.initializeSlotsCache initializes the slots cache by querying the redis server, and also adds whatever startNodes it was given. If the start nodes were given as hostnames, this will result in two entries for each start node: one for the host name, and one for the IP address reported by cluster slots. Queries against the cluster continue to work, but iterating over the nodes in the cluster (e.g., for aggregating per-node stats) also includes these bogus entries.
Steps to reproduce:
Our setup:

Two redis instances running on separate machines, named redis-1 and redis-2
Java application running on a third machine: jobs-1. Specifies cluster start nodes as redis-1:6379, redis-2:6379.
Iterate through pool nodes with:

for (JedisPool pool : cluster.getClusterNodes().values()) {
    try (Jedis jedis = pool.getResource()) {
        // do stuff
    } catch (Exception e) {
        // we hit this exception any time `pool.getResource()` returns one of the "phantom" nodes w/ hostname instead of IP
    }
}

We have a workaround that allows us to specify per-machine hostnames (we just us InetAddress to do a DNS lookup of the IP before we send it to jedis), BUT it would be really nice to be able to pass the host name of a load-balancer pool to Jedis for service discovery. It could make an initial query to that machine, learn all the node info from cluster slots, and that way we wouldn't need any hard-coded IP address or machine names in our configuration.
If this seems like a reasonable approach, LMK and I'll attempt a PR.
Thanks!
Redis / Jedis Configuration
Jedis version:
2.8.0
Redis version:
3.0.x
Java version:
8.x

@roblg thanks for reporting this issue. I see the situation you're facing and I totally agree that it's something that we need solve from the Jedis perspective.
I think I don't understand the approach you're suggesting to pass a host for a load-balancer pool for Jedis to do service discovery. What do you mean by a load-balancer pool?, how is Jedis supposed to query the nodes from this load-balanacer pool?. Which would be the API to do that?
I'm thinking about two possible solutions for this ATM:

Use the startnodes just to query the cluster and don't add them to the current internal node list

Make a DNS resolution to get the startnodes IP in order to standardize.

From the two I think I prefer the 1st option as it doesn't involve DNS resolutions (which might lead to possible errors) and it's less error prone.
Thoughts?

Closed by #1240


Stop scaffolding trees with duplicated conditions

The following tree:
applyAccruedFundingTest
├── it should call _updateFundingIndex
└── when funding index changes
    ├── it should emit AccruedFundingApplied event
    ├── it should update the lastFundingIndexApplied
    ├── when position is long
    │   ├── when funding index is greater than lastFundingIndexApplied
    │   │   └── it should increase the entry price
    │   └── when funding index is less than lastFundingIndexApplied
    │       └── it should decrease the entry price
    └── when position is short
        ├── when funding index is greater than lastFundingIndexApplied
        │   └── it should decrease the entry price
        └── when funding index is less than lastFundingIndexApplied
            └── it should increase the entry price

should error when scaffolding since we can't generate duplicated test names -- that's not valid solidity syntax. Right now, we scaffold and silently dedup the conditions.

Solved by https://github.com/alexfertel/bulloak/commit/3bcad25241dffcd00aa654b2b5b8b18c947e3e15


Select multiple files without keyboard

Unless I missed something, there is no way to select multiple files without a keyboard. It could be really handy to have a Select all button or other selection options in the context menu.
An indication of how many files are selected next to the total length/size would also be useful: 8/12 - 00:36:21 - 70,82 MiB

I can add a select all button next to the search box...and will also implemented that number of selected items indicator

Here's a better screenshot with selected count in the bottom bar:

https://github.com/NickvisionApps/Tagger/releases/tag/2023.9.0-beta1


Release SDKs v3.2.0 + ODIS Common pkg README

Description
Release branch for v3.2.0 of the Celo SDKs
Other changes
Adds README with Release Process instructions to the
Tested
NA
Related issues
NA
Backwards compatibility
Yes
Documentation
NA

I think we dont want the package-lock.json as it would interfer with yarn.lock


QA test json generator

This is the first version of the script which generates the QA json. It needs to be run locally and the file updated whenever the contents of the repository change. In the future we would like to move this to a github action, however that requires some changes to our QA portal frontend.

Usage:
python generate_qa_json.py > qa.json


Miscellaneous Code Polishing

Several small changes. This sets us up for deleting all the deprecated code in the next release.

Coverage remained the same at 100.0% when pulling 05207fc2ce08b88f6979f0af36595ed165cf9cd4 on jeffgbutler:record-to-row into 6ac3110633a59e1db89d790f9811ca247816921a on mybatis:master.


Grunt html vs. nu html checker

Hello,
I could not find a way to  pass a simple html output (as a string) to the grunt html task. Since it is available in the API of the Nu Html Checker it is expected to be available also in this plugin. Could you please help out? Is this functionality available here?

No, unfortunately that's not available.
As a workaround you could write the HTML string to a temporary file, validate that, then delete the file?


sp_configure: ADR cleaner retry timeout (min) and ADR Preallocation Factor

This value in Microsoft (https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/server-configuration-options-sql-server?view=sql-server-ver15)

ADR cleaner retry timeout (min): has a default value of 15.
ADR Preallocation Factor: has a default value of 4.

In the page "https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/adr-cleaner-retry-timeout-configuration-option?view=sql-server-ver15" said:
Occasionally the cleaner runs into issues while acquiring object level locks due to conflicts with user workload during its sweep. It tracks such pages in a separate list. The ADR cleaner retry timeout (default value of 15) controls the amount of time the cleaner would spend exclusively retrying object lock acquisition and cleanup of page before abandoning the sweep. Completion of a sweep with 100% success is essential to keep the growth of aborted transactions in the aborted transactions map. If the separate list cannot be cleaned up in the prescribed timeout, then the current sweep will be abandoned and the next sweep will start.
In the page:  https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/adr-preallocation-factor-server-configuration-option?view=sql-server-ver15 said:
.......
The number of pages the background thread pre-allocates is based on various workload heuristics, but largely allocates pages in chunks of 512 pages. The ADR preallocation factor is a multiple of the chunk. By default, the factor is 4. This means it preallocates 2048 pages at once when required.
......
However during the process of install  the value of "ADR cleaner retry timeout (min) " is "0", and the same for "ADR Preallocation Factor"
When I use the next code the default value is o.

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

ID: 32e9c4f8-ec32-ff5f-93a4-8f07b664db5f
Version Independent ID: 2111d777-a999-dc99-a3e5-cc7e7877c9b8
Content: Server Configuration Options (SQL Server) - SQL Server
Content Source: docs/database-engine/configure-windows/server-configuration-options-sql-server.md
Service: sql
Sub-service: configuration
GitHub Login: @rwestMSFT
Microsoft Alias: randolphwest

As noted in #8290, we are looking into this. Thank you for your contribution.

@JCNavarroG We are tracking this item internally (AB#70883), so this issue is being closed. Thanks again for your feedback. When we have an update to share, we will let you know here. In the meanwhile, please feel free to leave additional feedback.

@JCNavarroG Thank you for your patience. I wanted to let you know we updated this article some time ago, and neglected to update this issue to say so. Depending on which SQL Server you pick from the top left menu (2019 or 2022), the information relevant to 2019 is displayed.
Additionally, we are going to be addressing #8290 in the next few days.
Once again we appreciate your feedback!


Create Wiki Page: Status of Boosters

Let's create a table of all known Boosters under our control, and the state they're in.
Blocking under Mission finalization
Ready for Developer
Under Development
Ready for QE
Maintenance

@ALRubinger do you want this as the main wiki page? or a different page?

@rhoads-zach, personally the main wiki page is the best place

@ALRubinger @kenfinnigan I've created an initial page here:
https://github.com/openshiftio/appdev-documentation/wiki
Closing this issue for now.
I'll assume as Missions are added the page will be updated. Also, the status should be updated by the mission owner or @ALRubinger

Thanks @rhoads-zach !


SAM-2599 Trim user and password in the security settings

To avoid the unintentional addition of spaces at the beginning and at the end in the username and password in the security settings.

Updated with StringUtils. In the rest of files doesn't seem needed to use that because it is a simple trim that works in all the scenarios.

Waiting for my next update (change all the trims to StringUtils.trim).

Left comment on issue in JIRA


Input options

It seems likely nplinker is going to end up providing a lot of potential options to configure and control various different things (where to find input files, user-defined IDs, where to put output files, what format the output should be in, parameters for scoring methods, etc).
So we will need a way to:

provide sensible defaults for every option
make it possible to override defaults selectively (e.g. using env vars or passing args on command line)
make it simple to rerun nplinker without relying on excessively long lists of command line args (maybe by adding the ability to read the options from a file instead)
...

This is now handled by using a .toml config file (example here) + ArgParser


[type: test]: Add unit test for package ：plugin-logging-rocketmq-utils

Add unit test for package ：plugin-logging-rocketmq-utils

Codecov Report

Merging #3191 (d910d1f) into master (35e9f98) will decrease coverage by 0.24%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #3191      +/-   ##
============================================
- Coverage     57.47%   57.22%   -0.25%
+ Complexity     4526     4507      -19
============================================
  Files           730      730
  Lines         20818    20818
  Branches       1915     1915
============================================
- Hits          11965    11914      -51
- Misses         7803     7842      +39
- Partials       1050     1062      +12

Impacted Files
Coverage Δ

...ache/shenyu/plugin/grpc/cache/GrpcClientCache.java
68.75% <0.00%> (-31.25%)
:arrow_down:

...admin/controller/ShenyuHttpRegistryController.java
77.77% <0.00%> (-22.23%)
:arrow_down:

...che/shenyu/sync/data/http/HttpSyncDataService.java
69.10% <0.00%> (-14.64%)
:arrow_down:

...yu/sync/data/http/refresh/AbstractDataRefresh.java
70.00% <0.00%> (-13.34%)
:arrow_down:

...in/disruptor/RegisterServerDisruptorPublisher.java
52.94% <0.00%> (-11.77%)
:arrow_down:

...henyu/admin/service/impl/UpstreamCheckService.java
51.42% <0.00%> (-11.43%)
:arrow_down:

...a/org/apache/shenyu/common/utils/VersionUtils.java
67.85% <0.00%> (-10.72%)
:arrow_down:

.../apache/shenyu/admin/model/dto/BatchCommonDTO.java
50.00% <0.00%> (-7.15%)
:arrow_down:

...apache/shenyu/admin/model/dto/AuthPathWarpDTO.java
57.14% <0.00%> (-7.15%)
:arrow_down:

...henyu/plugin/grpc/resolver/ShenyuNameResolver.java
56.38% <0.00%> (-6.39%)
:arrow_down:

... and 29 more

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 f15e9e8...d910d1f. Read the comment docs.


Add title field, currently same as id/name

Currently the SATC metadata returned from datacube-explorer contains the two fields id and title, but they are set with the same value:
https://github.com/opendatacube/datacube-explorer/blob/7866009396416c47fa6a6e2b7b91cff881770c28/cubedash/_stac.py#L811
How much work would it be to look for the title field and use it if available in the product definition? It wouldn't be a breaking change since it would still support all the product definitions without a title in them.

Created a PR to add this functionality: https://github.com/opendatacube/datacube-explorer/pull/517


python311Packages.questionary: unstable-2022-07-27 -> 2.0.1

Description of changes
Diff: https://github.com/tmbo/questionary/compare/848b040c5b7086ffe75bd92c656e15e94d905146...2.0.1
Changelog: https://github.com/tmbo/questionary/blob/2.0.1/docs/pages/changelog.rst

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[x] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 261565 run on x86_64-linux 1

2 packages failed to build:

audible-cli
audible-cli.dist

20 packages built:

commitizen
commitizen.dist
copier
copier.dist
maubot (python310Packages.maubot)
maubot.dist (python310Packages.maubot.dist)
python310Packages.myjwt
python310Packages.myjwt.dist
python310Packages.qiling
python310Packages.qiling.dist
python310Packages.questionary
python310Packages.questionary.dist
python311Packages.myjwt
python311Packages.myjwt.dist
python311Packages.qiling
python311Packages.qiling.dist
python311Packages.questionary
python311Packages.questionary.dist
tockloader
tockloader.dist

audible-cli will be fixed in #261803

Result of nixpkgs-review pr 261565 at 44c59cb2 run on x86_64-linux 1

1 package marked as broken and skipped:

python310Packages.maubot

11 packages built successfully:

audible-cli
commitizen
copier
maubot
python310Packages.myjwt
python310Packages.qiling
python310Packages.questionary
python311Packages.myjwt
python311Packages.qiling
python311Packages.questionary
tockloader


opts need to be passed through to i2cConfig

Here: https://github.com/noopkat/oled-js/blob/master/oled.js#L103 should be:
this._setUpI2C(opts);

And here: https://github.com/noopkat/oled-js/blob/master/oled.js#L158-L160 should be:
Oled.prototype._setUpI2C = function(opts) {
  // enable i2C in firmata
  this.board.io.i2cConfig(opts);

Otherwise non-firmata io-plugins are unable to send special properties along to i2cConfig, which results in bugs like this: https://github.com/rwaldron/tessel-io/issues/18

makes sense! I can fix this

Thanks ❤

@noopkat  looking forward to it

closing this as the fix has been published. Thank you for your help, @rwaldron 💯


Just upgraded to Okhttp4. Cache is not working

Hi, I just moved to Okhttp 4.8.1 from 3.12. I followed the Wiki and Recipe, but Cache is apparently not working.
Hitcount is always zero while Network count keeps increasing.
This is what I'm doing!  First, I create a  cache and Okhttp client in Application file.
    public static Cache cache;

File cacheDiry = new File(this.getCacheDir(), "hypecache");

        cache  = new okhttp3.Cache(cacheDiry, cacheSize);
        okHttpClient = new  OkHttpClient.Builder()cache(cache).build();

Then I access this client and cache in my activity using this!
public static  String requestGetServer(String json) {
        final MediaType mediaType
                = MediaType.parse("application/json");
     //  Log.d("request made","made2");
        OkHttpClient httpClient = MyApp.okHttpClient;

        String url = ConstantValues.url;

        byte[] msg = json.getBytes(Charset.forName("ISO-8859-1"));
       String result="";
        String res = url + "?v="+Base64.encodeToString(msg,Base64.NO_WRAP);

        Request request = new Request.Builder()
                .url(res)
                .addHeader("Accept", "application/json")
                .addHeader("Content-type", "application/json") //NON-NLS
               // .get()
                .build();

        Response response = null;
        try {
            response = httpClient.newCall(request).execute();
            if (response.isSuccessful()) {
                result= response.body().string();
                response.body().close();
                Log.v("cache",MyApp.cache.hitCount() +" "+MyApp.cache.networkCount()) ;
            } else {
                MyApp.cache.evictAll();
            }
        } catch (IOException e) {
e.printStackTrace();
        }
        return result;
    }

Please tell me what I'm doing wrong! Same thing works in 3.12
Cache headers have max-age set as 3600

We can't reproduce from this code sample.  You should raise a question with a colleague and debug through it with their help, or ask on stackoverflow.


how can i control the num of thread when I load a model??

I want the num thread is one, but it always been the num of cpu...when I load a model

You should use this param to control number of threads:
https://lightgbm.readthedocs.io/en/latest/Parameters.html#num_threads
It can be used during predict phase as well.


Kustomize Patch Support for coredns-operator base manifests

Users should be able to include arbitrary patches to operator resources.
One use-case would be to mutate the Service to annotate it for an ingress-controller.
@johnsonj is working on implementing Kustomize style patch support:
https://github.com/justinsb/addon-operators/pull/1
https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/pull/44
We should get the operator side of things merged into #7 either in justin's repo before merge.
We can also just re-open the PR on this repo which unblocks merging #7.

@johnsonj In https://github.com/kubernetes-sigs/addon-operators/pull/18 you say that it updates this issue. Could we break down what needs to be done here?

I think this should be closed at this point. There's lots of ways forward for patching but I believe the exploratory CL covers this issue.

Super, thanks @johnsonj!


Escape markdown in faulty source commands

Closes #1177

If we use double backticks it will again break if the argument provided contains a double backtick.
I agree with getting rid of the codeblock itself
I'll commit that for now, if others have an issue, we can discuss further.

Can this PR be marked as Low Effort or Spam? I'm not very happy with the work I did.

While it is a relatively simple contribution, our team don't consider it low effort or spam as it's directly addressing an issue ticket we wanted to be resolved. Your solution wasn't super involved because it didn't need to be, and that's a good thing. As we appreciate the contribution, there's no reason for us to mark it invalid.


I can agree multiple times with a tag, the counter keeps increasing

I have up-voted like 5 times the Magnetic Resonance Imaging tag here:
http://brainspell.herokuapp.com/view-article?id=16584892

Fixed with latest commit. Since I changed the database structure that we use to represent a vote, that same article (and any other articles previously voted on) might throw an error. At some point we'll have to switch out our current test database with a fresh copy. But you can test out the voting on a different article, and it should work.


Source mode not working for new datasets

Loading datasets med_qa_open and the MMLU datasets does not work in source view.
(It is working in thoughtsource view, so generating CoTs etc is working.)

deactivated the global test for checking if the source view is working for all files for now (test_load_collections/test_source


  Generated by :no_entry_sign: dangerJS against 58d752d6fa092718b262695ff84eb7789156d786

The github-gist-last-commit service development is done- but I have issues with tests.
If I add .json extension to the call’s url, the call fails.
If I don’t add it, I receive an SVG file in a response.

@PaulaBarszcz - the one uncommented test you have works fine with when the .json extension is added (the last commit in gist (ancient) test). The issues you mentioned offline with the others is probably because there is an unnecessary leading /gists in them. The way our createServiceTester works is that it handles determining and incorporating the base part of the badge route (the part you've currently got set to github/gists in the service classes) automatically, so the only parts that are necessary to specify in the test route are the paramters

@PaulaBarszcz - the one uncommented test you have works fine with when the .json extension is added (the last commit in gist (ancient) test). The issues you mentioned offline with the others is probably because there is an unnecessary leading /gists in them. The way our createServiceTester works is that it handles determining and incorporating the base part of the badge route (the part you've currently got set to github/gists in the service classes) automatically, so the only parts that are necessary to specify in the test route are the paramters

Thanks, the fixed tests are pushed  :)
Now I'm trying to figure out where can I check the available names for the test suites to put in the PR's title.
In this PR should I put [GitHub], [GitHubActivity], [GitHubCommitActivity] or something else? :)

Since we're changing the route to be github-gist/last-commit,
should we also update the file names?
Currently we have:

Implementation of the changes is done, and this PR is ready for a re-review :)

Now I'm trying to figure out where can I check the available names for the test suites to put in the PR's title.
In this PR should I put [GitHub], [GitHubActivity], [GitHubCommitActivity] or something else?

You typically only want to run the tests relevant for the code being added or modified. The more generic/higher level the filter the more tests get executed, and the greater the potential for failures/brittleness in tests that weren't actually related to proposed changes. In this case we'd actually want to use GithubGistLastCommit to run the tests here instead of the tests for the repo commit badge.
I've updated the title and re-executed the tests accordingly

should we also update the file names?

No, these are fine as-is :+1:

should we also update the file names?

No, these are fine as-is 👍

Cool, thanks.

Now I'm trying to figure out where can I check the available names for the test suites to put in the PR's title.
In this PR should I put [GitHub], [GitHubActivity], [GitHubCommitActivity] or something else?

You typically only want to run the tests relevant for the code being added or modified. The more generic/higher level the filter the more tests get executed, and the greater the potential for failures/brittleness in tests that weren't actually related to proposed changes. In this case we'd actually want to use GithubGistLastCommit to run the tests here instead of the tests for the repo commit badge.
I've updated the title and re-executed the tests accordingly

Great, thank you.
Should anything else be changed/added in this PR? :)

Nope all set. I was just waiting for feedback from others offline relative to the route pattern for github gist badges going forward but we're good to go!


Type alias getting "DeclarationTypeChanged"

While technically true, Declaration Type did Change. It's a compatible change. Is this expected behaviour:
https://github.com/jpillora/gocompat/commit/e9400c2bb9ad16a65820a1bcc082617169f5f59b
"github.com/jpillora/gocompat".Add DeclarationTypeChanged
"github.com/jpillora/gocompat".Num DeclarationTypeChanged
found backwards incompatible changes

Maybe there's compatibility issues from going from func to var? However the type alias should be fine right? My understanding is the purpose of type aliases was to perform exactly this kind of change

@jpillora This is currently the expected behavior. Changing an existing type to an alias is not backwards compatible. For example:

Reflection: reflect.TypeOf on Num would return gocompat.Num before the change, but it will be newmath.Num after it.
Equality: Before the change, gocompat.Num and newmath.Num values would not be equal. After the change, they are. This can break code that was previously dealing with both types and is particularly relevant if they come from different modules.

That being said, I think it would make sense to have more fine-grained output here and signaling when the only change in the declaration is the presence of an alias or the change of an alias target.

RE: Reflection: true - though this is a runtime compatibility issue, similar to introducing a logical error
RE: Equality: before the change newmath didn't exist. Are you refering to a case where newmath.Num existed, but referred to a different type?

Basically, what I'm looking for is "will old programs compile with these changes?" and then any runtime issues can be resolved after that

Equality: before the change newmath didn't exist.

Yep. I'll check if there is a reasonable way to check that. It can probably done if both types belong to the same module.

Basically, what I'm looking for is "will old programs compile with these changes?"

Ok. Sounds reasonable.


Cannot call method 'function' of undefined

I'm experiencing an issue with Jest and here is a simple test case that I have made.
You can also clone this simple test case from here: https://github.com/bjfletcher/jest-issue
EDITED
(Old test case removed.  Please see the aforementioned repo for a better test case.)
Error:
$ jest
Using Jest CLI v0.2.1
 FAIL  __tests__/Authenticator.js
TypeError: /Users/ben/projects/jest-issue/__tests__/Authenticator.js: /Users/ben/projects/jest-issue/lib/Authenticator.js: /Users/ben/projects/jest-issue/node_modules/body-parser/index.js: Cannot call method 'function' of undefined
1 test failed, 0 tests passed (1 total)
Run time: 0.312s
$

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.

This seems like it was resolved.


Todo

I think this todo maybe more clear and more expansive about what there might be todo

Not sure you meant to also commit the secret codes work you have been doing on this PR?

No... I'll fix this later. TODO isn't super important. I thought may of made this blunder but just cracked on

dead data