[ https://issues.apache.org/jira/browse/GEODE-4101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Swapnil Bawaskar closed GEODE-4101. ----------------------------------- > Replace Redirection Sytem Properties by --redirect-output flag in GFSH > commands > ------------------------------------------------------------------------------- > > Key: GEODE-4101 > URL: https://issues.apache.org/jira/browse/GEODE-4101 > Project: Geode > Issue Type: Bug > Components: docs, gfsh > Reporter: Juan José Ramos Cassella > Assignee: Dave Barnes > Priority: Major > Labels: pull-request-available > Fix For: 1.5.0 > > Time Spent: 40m > Remaining Estimate: 0h > > Currently GEODE is "swallowing" all output sent to stdout and stderr by > default and there's no way of changing this behavior when starting members > through gfsh. > This, between other things, prevents users from playing around with > {{System.out.println()}} during development phases, there could even be > certain scenarios where some critical piece of information that comes out > through stdout somehow bypassed all the logging frameworks. Not only that, > but this also prevents the user from getting thread dumps by executing a > plain {{kill -3}} or {{kill -QUIT}} using the processId, which is critical in > troubleshooting. > Currently there are two internal flags that can be used to prevent this > default behavior, both have to be used at the same time and both are very > counterintuitive {{gemfire.OSProcess.ENABLE_OUTPUT_REDIRECTION=true}} and > {{gemfire.OSProcess.DISABLE_OUTPUT_REDIRECTION=false}}. These flags, however, > don't work at all when starting members through {{gfsh}}, and that's because > the relevant commands wrongly assume that the flags are already part of the > system properties too early in the lifecylce execution of the command: > {code:title=StartLocatorCommand.java|borderStyle=solid} > @CliCommand(value = CliStrings.START_LOCATOR, help = > CliStrings.START_LOCATOR__HELP) > @CliMetaData(shellOnly = true, relatedTopic = > {CliStrings.TOPIC_GEODE_LOCATOR, CliStrings.TOPIC_GEODE_LIFECYCLE}) > public Result startLocator(...) throws Exception { > (...) > final boolean redirectOutput = > Boolean.getBoolean(OSProcess.ENABLE_OUTPUT_REDIRECTION_PROPERTY); > LocatorLauncher.Builder locatorLauncherBuilder = > new LocatorLauncher.Builder() > .setRedirectOutput(redirectOutput) > (...) > } > {code} > {code:title=StartServerCommand.java|borderStyle=solid} > @CliCommand(value = CliStrings.START_SERVER, help = > CliStrings.START_SERVER__HELP) > @CliMetaData(shellOnly = true, relatedTopic = {CliStrings.TOPIC_GEODE_SERVER, > CliStrings.TOPIC_GEODE_LIFECYCLE}) > public Result startServer(...) throws Exception { > (...) > final boolean redirectOutput = > Boolean.getBoolean(OSProcess.ENABLE_OUTPUT_REDIRECTION_PROPERTY); > ServerLauncher.Builder serverLauncherBuilder = > new ServerLauncher.Builder() > .setRedirectOutput(redirectOutput) > (...) > {code} > At this stage during the execution, the system properties used when starting > the members haven't been fully parsed yet and the flags only present within > the {{sun.java.command}} system property, so > {{Boolean.getBoolean(OSProcess.ENABLE_OUTPUT_REDIRECTION_PROPERTY)}} will > always return {{false}}. > The goal of the current JIRA is to add a {{--redirect-ouput}} flag to the > start commands in {{GFSH}} and deprecate the properties > {{OSProcess.DISABLE_OUTPUT_REDIRECTION}} and > {{OSProcess.ENABLE_OUTPUT_REDIRECTION}}; unfortunately they can't be directly > deleted because, even when they are internal, they've been referenced several > times in external articles to workaround older issues. -- This message was sent by Atlassian JIRA (v7.6.3#76005)